求解,gcc编译c++内联汇编编译后,原始内联代码被更改的问题
c++内联汇编代码,内存访问处的代码,g++编译之后出现问题:
原始代码:
1 int main() 2 { 3 unsigned long tmp = 0; 4 __asm__ __volatile__ 5 ( 6 ".intel_syntax noprefixn" 7 "mov rax,%0n" 8 "mov rbx,1n" 9 "mov qword [rax],rbx" 10 : 11 :"r"(&tmp) 12 :"rax","rbx" 13 ); 14 return 0; 15 }
0x00000000004004fa <+13>: lea rdx,[rbp-0x10] 0x00000000004004fe <+17>: mov rax,rdx 0x0000000000400501 <+20>: mov rbx,0x1 0x0000000000400508 <+27>: mov QWORD PTR [rax+0x8],rbx
mov qword [rax],rbx
编译之后变成
mov QWORD PTR [rax+0x8],rbx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
引用来自“不高兴你咬我”的评论
mov qword [rax],rbx
修改为 mov [rax],rbx
mov qword [rax],rbx
修改为 mov [rax],rbx