CSCW2-Newly To Assembly

查看反汇编代码

gcc编译链接得到目标文件:

gcc -g -Wall add.c -o add

利用gdb查看反汇编代码:

gdb -q add

得到:

heamon7@ubuntu:~/Project/test$ gdb -q add
Reading symbols from add...done.
(gdb) l 1,20
1    int add(int a, int b) {
2        int result;
3
4        result = a + b;
5
6        return result;
7    }
8
9    int main(int argc, char *argv[]) {
10        int a,b,result;
11
12        a = 1;
13        b = 2;
14        result = add(a,b);
15
16        return 0;
17    }
(gdb) disass add
Dump of assembler code for function add:
   0x00000000004004ed <+0>:    push   %rbp
   0x00000000004004ee <+1>:    mov    %rsp,%rbp
   0x00000000004004f1 <+4>:    mov    %edi,-0x14(%rbp)
   0x00000000004004f4 <+7>:    mov    %esi,-0x18(%rbp)
   0x00000000004004f7 <+10>:    mov    -0x18(%rbp),%eax
   0x00000000004004fa <+13>:    mov    -0x14(%rbp),%edx
   0x00000000004004fd <+16>:    add    %edx,%eax
   0x00000000004004ff <+18>:    mov    %eax,-0x4(%rbp)
   0x0000000000400502 <+21>:    mov    -0x4(%rbp),%eax
   0x0000000000400505 <+24>:    pop    %rbp
   0x0000000000400506 <+25>:    retq
End of assembler dump.
(gdb) disass main
Dump of assembler code for function main:
   0x0000000000400507 <+0>:    push   %rbp
   0x0000000000400508 <+1>:    mov    %rsp,%rbp
   0x000000000040050b <+4>:    sub    $0x20,%rsp
   0x000000000040050f <+8>:    mov    %edi,-0x14(%rbp)
   0x0000000000400512 <+11>:    mov    %rsi,-0x20(%rbp)
   0x0000000000400516 <+15>:    movl   $0x1,-0xc(%rbp)
   0x000000000040051d <+22>:    movl   $0x2,-0x8(%rbp)
   0x0000000000400524 <+29>:    mov    -0x8(%rbp),%edx
   0x0000000000400527 <+32>:    mov    -0xc(%rbp),%eax
   0x000000000040052a <+35>:    mov    %edx,%esi
   0x000000000040052c <+37>:    mov    %eax,%edi
   0x000000000040052e <+39>:    callq  0x4004ed <add>
   0x0000000000400533 <+44>:    mov    %eax,-0x4(%rbp)
   0x0000000000400536 <+47>:    mov    $0x0,%eax
   0x000000000040053b <+52>:    leaveq
   0x000000000040053c <+53>:    retq
End of assembler dump.
(gdb)