【发布时间】:2011-04-16 19:42:48
【问题描述】:
好的,所以我有一个 C++ 函数,我试图在其中使用内联汇编
void ToggleBit(unsigned char &Byte, unsigned int Bit)
{
/* In C:
* Byte ^= (1<<Bit);
*/
__asm
{
push edx
push ecx
mov ecx, Bit
xor edx, edx
mov edx, 1
sal dl, cl
xor BYTE PTR [Byte], dl
pop ecx
pop edx
}
}
这应该可行,对吧?由于 Byte 是一个引用(本质上是一个常量指针),所以必须解除对它的引用才能访问数据……但它不起作用!
调试以下代码:
mov edx, Byte
;edx = 0x0040f9d3
mov bl, BYTE PTR [Byte]
;bl = 0xd3
我完全不明白为什么会发生这种情况。
【问题讨论】:
标签: visual-c++ x86 inline-assembly masm visual-studio-2010