xiaoxiao2216 发表于 2013-10-9 19:39:15

用eclipse生成的汇编代码和用codeBlocks的不一样

同样的一个程序,用codeBlock可以生成常规的汇编代码,可是用eclipse-c,生成的汇编代码如下
15      int main(void) {
004013d9:   call 0x401a50 <__main>
16             int i=1;//注释
004013de:   movl $0x1,0x1c(%esp)
18                while(i<=5){
004013e6:   jmp 0x40141f <main+79>
19                      printf("%d\n",S(i++));
004013e8:   mov 0x1c(%esp),%eax
004013ec:   imul 0x1c(%esp),%eax
004013f1:   addl $0x1,0x1c(%esp)
004013f6:   addl $0x1,0x1c(%esp)
004013fb:   mov %eax,0x4(%esp)
004013ff:   movl $0x403064,(%esp)
00401406:   call 0x401cc0 <printf>
20                      printf("i的值是%d\n",i);
0040140b:   mov 0x1c(%esp),%eax
0040140f:   mov %eax,0x4(%esp)

……

以下是codeBlocks的
004013D0        push   ebp
004013D1        mov    ebp,esp
004013D3        and    esp,0xfffffff0
004013D6        sub    esp,0x20
004013D9        call   0x401a50 <__main>
004013DE        mov    DWORD PTR ,0x1
004013E6        jmp    0x40141f <main+79>
004013E8        mov    eax,DWORD PTR
004013EC        imul   eax,DWORD PTR
004013F1        add    DWORD PTR ,0x1
004013F6        add    DWORD PTR ,0x1
004013FB        mov    DWORD PTR ,eax
004013FF        mov    DWORD PTR ,0x403064
00401406        call   0x401cc0 <printf>
0040140B        mov    eax,DWORD PTR
0040140F        mov    DWORD PTR ,eax
……



不知道是哪里的问题?


福禄娃娃 发表于 2013-10-9 23:23:27

这是at&t汇编代码可改为显示intel汇编代码
Window-> show view ->Console
在Console窗口右上角找到Display Selected Console,点击向下的小三角形后,选技gdb即可在控制台下输入gdb命令。
这里我们要输入命令:
set disassembly-flavor intel    (以intel汇编格式显示汇编代码)
set disassembly-flavor att      (以AT&T汇编格式显示汇编代码)

输入命令后,关闭DFS Disassembly窗口。
Window-> show view ->DFS Disassembly重新打开即可的得到相应汇编格式。

xiaoxiao2216 发表于 2013-10-10 23:33:04

福禄娃娃 发表于 2013-10-9 23:23 static/image/common/back.gif
这是at&t汇编代码可改为显示intel汇编代码
Window-> show view ->Console
在Console窗口右上角找到Displa ...

谢谢.按照你的方式,可以生成intel汇编了.

magicyuc 发表于 2013-10-11 13:01:41

学习一下啦
页: [1]
查看完整版本: 用eclipse生成的汇编代码和用codeBlocks的不一样