c – GCC内联汇编错误:无法获取’this’的地址,这是一个rvalue
发布时间:2020-12-14 19:38:55 所属栏目:百科 来源:网络整理
导读:我还在和GCC打架 – 编译下面的内联汇编代码(带-fasm-blocks,它启用了英特尔风格的汇编语法)给我一个奇怪的错误不能
我还在和GCC打架 – 编译下面的内联汇编代码(带-fasm-blocks,它启用了英特尔风格的汇编语法)给我一个奇怪的错误不能取’this’的地址,这是一个rvalue表达式…
MyClass::MyFunction() { _asm { //... mov ebx,this // error: Cannot take the address of 'this',which is an rvalue expression //... mov eax,which is an rvalue expression //... }; } 为什么我可以将指针存储到寄存器中的不同对象,但是不能使用指向MyClass实例的指针? 解决方法
这是因为编译器可能自己决定将其存储在寄存器(通常是ECX)而不是存储器单元中,以用于优化目的,或者因为
calling convention明确指定它应该这样做.
在这种情况下,您不能获取其地址,因为寄存器不是可寻址的内存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |