c 指针数组的汇编表示

vi  arrpoint1.c

 1 #include <stdio.h>
 2 int main()
 3 {
 4     
 5     int b[2] = {8,1},j,t;
 6      int c[2] = {2,3};
 7      int *pai[2] = {b, c};  
 8     t = *(*pai);
 9     printf("%d\n", t);
10     t = *(*pai+1);
11      printf("%d\n", t);
12      
13      int *p = &t;
14      printf("%d\n", p);
15      printf("%d\n", *p);
16 }

 

gcc -c arrpoint1.c

objdump -d   arrpoint1.o

 1 arrpoint1.o:     file format elf64-x86-64
 2 
 3 
 4 Disassembly of section .text:
 5 
 6 0000000000000000 <main>:
 7    0:    55                       push   %rbp
 8    1:    48 89 e5                 mov    %rsp,%rbp
 9    4:    48 83 ec 40              sub    $0x40,%rsp
10    8:    c7 45 e0 08 00 00 00     movl   $0x8,-0x20(%rbp)
11    f:    c7 45 e4 01 00 00 00     movl   $0x1,-0x1c(%rbp)
12   16:    c7 45 d0 02 00 00 00     movl   $0x2,-0x30(%rbp)
13   1d:    c7 45 d4 03 00 00 00     movl   $0x3,-0x2c(%rbp)
14   24:    48 8d 45 e0              lea    -0x20(%rbp),%rax
15   28:    48 89 45 c0              mov    %rax,-0x40(%rbp)
16   2c:    48 8d 45 d0              lea    -0x30(%rbp),%rax
17   30:    48 89 45 c8              mov    %rax,-0x38(%rbp)
18   34:    48 8b 45 c0              mov    -0x40(%rbp),%rax
19   38:    8b 00                    mov    (%rax),%eax
20   3a:    89 45 dc                 mov    %eax,-0x24(%rbp)
21   3d:    8b 55 dc                 mov    -0x24(%rbp),%edx
22   40:    b8 00 00 00 00           mov    $0x0,%eax
23   45:    89 d6                    mov    %edx,%esi
24   47:    48 89 c7                 mov    %rax,%rdi
25   4a:    b8 00 00 00 00           mov    $0x0,%eax
26   4f:    e8 00 00 00 00           callq  54 <main+0x54>
27   54:    48 8b 45 c0              mov    -0x40(%rbp),%rax
28   58:    48 83 c0 04              add    $0x4,%rax
29   5c:    8b 00                    mov    (%rax),%eax
30   5e:    89 45 dc                 mov    %eax,-0x24(%rbp)
31   61:    8b 55 dc                 mov    -0x24(%rbp),%edx
32   64:    b8 00 00 00 00           mov    $0x0,%eax
33   69:    89 d6                    mov    %edx,%esi
34   6b:    48 89 c7                 mov    %rax,%rdi
35   6e:    b8 00 00 00 00           mov    $0x0,%eax
36   73:    e8 00 00 00 00           callq  78 <main+0x78>
37   78:    48 8d 45 dc              lea    -0x24(%rbp),%rax
38   7c:    48 89 45 f8              mov    %rax,-0x8(%rbp)
39   80:    b8 00 00 00 00           mov    $0x0,%eax
40   85:    48 8b 55 f8              mov    -0x8(%rbp),%rdx
41   89:    48 89 d6                 mov    %rdx,%rsi
42   8c:    48 89 c7                 mov    %rax,%rdi
43   8f:    b8 00 00 00 00           mov    $0x0,%eax
44   94:    e8 00 00 00 00           callq  99 <main+0x99>
45   99:    48 8b 45 f8              mov    -0x8(%rbp),%rax
46   9d:    8b 10                    mov    (%rax),%edx
47   9f:    b8 00 00 00 00           mov    $0x0,%eax
48   a4:    89 d6                    mov    %edx,%esi
49   a6:    48 89 c7                 mov    %rax,%rdi
50   a9:    b8 00 00 00 00           mov    $0x0,%eax
51   ae:    e8 00 00 00 00           callq  b3 <main+0xb3>
52   b3:    c9                       leaveq 
53   b4:    c3                       retq   

 

posted @ 2017-09-15 14:29  蜗牛码  阅读(238)  评论(0编辑  收藏  举报