Muhammad Fauzan (fzn0x) - Blog

Macro di Rust

Langsung paham cara kerja macro.

Jadi macro di Rust itu mirip seperti Function, tapi insteadof generate value, ia lebih ke generate code.

Macro panic! dalam Rust tidak menggunakan bahasa assembly secara langsung. Sebaliknya, ia menghasilkan kode Rust yang menangani kondisi panic. Ketika macro panic! dipanggil, ia menghasilkan kode untuk membongkar tumpukan (stack unwinding) dan entah mencetak pesan atau memanggil penanganan panic.

Namun, di bawah kode Rust yang dihasilkan oleh macro panic!, mungkin terdapat instruksi bahasa assembly dalam implementasi pembongkaran tumpukan, tergantung pada platform dan kompiler yang digunakan. Pembongkaran tumpukan biasanya melibatkan manipulasi bingkai tumpukan, yang dapat melibatkan instruksi bahasa assembly untuk alasan efisiensi. Tetapi penggunaan bahasa assembly ini diabstraksikan dari pemrogram Rust yang tipikal, yang berinteraksi dengan macro panic! pada level abstraksi yang lebih tinggi.

Apa itu stack unwinding? simplenya stack unwinding ini nge unwind semua stack frames dari parent frame, yang sebenarnya apa yang terjadi di assembly codenya (7FF787BC94F4: E8 37 38 00 00 callq 0x7ff787bccd30 ; __rust_start_panic) sangat kompleks.

Karena setiap arsitektur set of instructions (list of instructions set) itu berbeda-beda instruksinya, contohnya x86 and AMD64 (x86 amd64 - felixcloutier) pasti punya instruksi yang berbeda dengan x86 assembly language (x86 - assembly language).

Screenshot fzn0x

Screenshot fzn0x