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