其他都没问题,只有最后一句
你说编译的时候自动替换,其实不是这样的
是先读取calc这个变量里面保存的地址,然后转到这个地址执行
cacl = sum;
11bd: 48 8d 05 95 ff ff ff leaq -0x6b(%rip),%rax # 1159 <sum>
11c4: 48 89 45 f0 movq %rax,-0x10(%rbp)
//printf("sum =%.2f\n", cacl); // 这个不是调用函数
printf("sum =%.2f\n", cacl(num1, num2));
11c8: f3 0f 10 45 ec movss -0x14(%rbp),%xmm0
11cd: 8b 45 e8 movl -0x18(%rbp),%eax
11d0: 48 8b 55 f0 movq -0x10(%rbp),%rdx
11d4: 0f 28 c8 movaps %xmm0,%xmm1
11d7: 66 0f 6e c0 movd %eax,%xmm0
11db: ff d2 callq *%rdx
11dd: 66 0f ef d2 pxor %xmm2,%xmm2
11e1: f3 0f 5a d0 cvtss2sd %xmm0,%xmm2
11e5: 66 48 0f 7e d0 movq %xmm2,%rax
11ea: 66 48 0f 6e c0 movq %rax,%xmm0
11ef: 48 8d 05 29 0e 00 00 leaq 0xe29(%rip),%rax # 201f <_IO_stdin_used+0x1f>
11f6: 48 89 c7 movq %rax,%rdi
11f9: b8 01 00 00 00 movl $0x1,%eax
11fe: e8 3d fe ff ff callq 1040 <printf@plt>
|