问一段代码
我的main.cpp
const char* data="abcdefg...............................(very long string)"
char l[10];
strcpy(l,data);
编译-O3之后得到代码
0x00000000004004a0 <main+0>: lea -0x18(%rsp),%rdi
0x00000000004004a5 <main+5>: mov $0x4005c0,%esi
0x00000000004004aa <main+10>: mov $0x94,%ecx
0x00000000004004af <main+15>: rep movsq %ds:(%rsi),%es:(%rdi)
这个是strcpy
0x00000000004004b2 <main+18>: mov (%rsi),%eax
0x00000000004004b4 <main+20>: mov %eax,(%rdi)
0x00000000004004b6 <main+22>: movzwl 0x5a7(%rip),%eax # 0x400a64
0x00000000004004bd <main+29>: add $0x4,%rdi
0x00000000004004c1 <main+33>: mov %ax,(%rdi)
0x00000000004004c4 <main+36>: movzbl 0x59b(%rip),%eax # 0x400a66
0x00000000004004cb <main+43>: mov %al,0x2(%rdi)
上面的又是什么?
0x00000000004004ce <main+46>: retq