Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menjana Kod Perhimpunan daripada C/C menggunakan GCC dan objdump?

Bagaimana untuk Menjana Kod Perhimpunan daripada C/C menggunakan GCC dan objdump?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-27 02:48:14553semak imbas

How to Generate Assembly Code from C/C   using GCC and objdump?

Cara Mengeluarkan Kod Assembler daripada Sumber C/C dalam GCC

Apabila menganalisis kod yang disusun, mengakses kod pemasangan yang dijana adalah penting. Dalam GCC, ini boleh dicapai menggunakan pilihan "-S".

Menggunakan Pilihan -S

Secara lalai, "-S" menjalankan prapemproses pada fail sumber, melaksanakan kompilasi awal tetapi berhenti sebelum menggunakan pemasang. Digabungkan dengan "-fverbose-asm", pilihan ini mengaitkan kod C dengan kod pemasangan sebagai ulasan, terutamanya berguna pada tahap pengoptimuman -O0.

gcc -S helloworld.c

Menyesuaikan Fail Output

Fail output biasanya dinamakan sempena fail sumber dengan sambungan .s. Untuk menyesuaikan lokasi fail output, gunakan pilihan "-o":

gcc -S -o my_asm_output.s helloworld.c

Sebagai alternatif, anda boleh output ke konsol dengan menggunakan "-o -":

gcc -S -o - helloworld.c | less

Mengakses Himpunan untuk Objek Boleh Laksana

Jika anda tidak mempunyai kod sumber asal tetapi mempunyai objek fail, gunakan objdump dengan pilihan "--disassemble" (-d):

objdump -S --disassemble helloworld > helloworld.dump

Dayakan penyahpepijatan dalam kompilasi asal (-g) untuk output pembongkaran yang dipertingkatkan dengan rujukan talian sumber.

Pilihan Objdump Tambahan

Pertimbangkan untuk menggunakan ini pilihan objdump untuk analisis yang lebih terperinci:

  • -rwC: Penempatan semula simbol, lumpuhkan pembalut baris dan demangle nama C
  • -Mintel: Intel syntax untuk x86 disassembly

Sebagai contoh, arahan berikut menyediakan pembongkaran yang kaya output:

objdump -drwC -Mintel -S foo.o | less

Ingat, "-r" adalah penting untuk memaparkan rujukan simbol dalam fail .o dengan ruang letak.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Kod Perhimpunan daripada C/C menggunakan GCC dan objdump?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn