-S
Theo mặc định, việc sử dụng chuyển đổi sang GCC trên các hệ thống dựa trên x86 sẽ tạo ra kết xuất cú pháp AT & T, có thể được chỉ định bằng công -masm=att
tắc, như vậy:
gcc -S -masm=att code.c
Trong khi đó, nếu bạn muốn tạo kết xuất theo cú pháp Intel, bạn có thể sử dụng công -masm=intel
tắc, như vậy:
gcc -S -masm=intel code.c
(Cả hai đều tạo ra các kết xuất code.c
theo cú pháp khác nhau của chúng, vào tệp code.s
tương ứng)
Để tạo hiệu ứng tương tự với objdump, bạn muốn sử dụng --disassembler-options=
intel
/ att
switch, một ví dụ (với các đoạn mã để minh họa sự khác biệt trong cú pháp):
$ 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
và
$ 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