การใช้-S
สวิตช์ไปที่ GCC บนระบบที่ใช้ x86 จะสร้างดัมพ์ของไวยากรณ์ AT&T โดยค่าเริ่มต้นซึ่งสามารถระบุได้ด้วย-masm=att
สวิตช์เช่น:
gcc -S -masm=att code.c
ในกรณีที่คุณต้องการสร้างดัมพ์ในไวยากรณ์ของ Intel คุณสามารถใช้-masm=intel
สวิตช์ได้ดังนี้:
gcc -S -masm=intel code.c
(ทั้งคู่สร้างดัมพ์code.c
ลงในไวยากรณ์ต่าง ๆ ลงในไฟล์code.s
ตามลำดับ)
ในการสร้างเอฟเฟกต์ที่คล้ายกันกับ objdump คุณต้องการใช้--disassembler-options=
intel
/ att
สวิตช์ตัวอย่าง (โดยมีโค้ดดั๊มเพื่อแสดงความแตกต่างในไวยากรณ์):
$ objdump -d --disassembler-options=att code.c
080483c4 <main>:
80483c4: 8d 4c 24 04 lea 0x4(%esp),%ecx
80483c8: 83 e4 f0 and $0xfffffff0,%esp
80483cb: ff 71 fc pushl -0x4(%ecx)
80483ce: 55 push %ebp
80483cf: 89 e5 mov %esp,%ebp
80483d1: 51 push %ecx
80483d2: 83 ec 04 sub $0x4,%esp
80483d5: c7 04 24 b0 84 04 08 movl $0x80484b0,(%esp)
80483dc: e8 13 ff ff ff call 80482f4 <puts@plt>
80483e1: b8 00 00 00 00 mov $0x0,%eax
80483e6: 83 c4 04 add $0x4,%esp
80483e9: 59 pop %ecx
80483ea: 5d pop %ebp
80483eb: 8d 61 fc lea -0x4(%ecx),%esp
80483ee: c3 ret
80483ef: 90 nop
และ
$ objdump -d --disassembler-options=intel code.c
080483c4 <main>:
80483c4: 8d 4c 24 04 lea ecx,[esp+0x4]
80483c8: 83 e4 f0 and esp,0xfffffff0
80483cb: ff 71 fc push DWORD PTR [ecx-0x4]
80483ce: 55 push ebp
80483cf: 89 e5 mov ebp,esp
80483d1: 51 push ecx
80483d2: 83 ec 04 sub esp,0x4
80483d5: c7 04 24 b0 84 04 08 mov DWORD PTR [esp],0x80484b0
80483dc: e8 13 ff ff ff call 80482f4 <puts@plt>
80483e1: b8 00 00 00 00 mov eax,0x0
80483e6: 83 c4 04 add esp,0x4
80483e9: 59 pop ecx
80483ea: 5d pop ebp
80483eb: 8d 61 fc lea esp,[ecx-0x4]
80483ee: c3 ret
80483ef: 90 nop