1
好了,所以我必须在我试图使用内联汇编Microsoft内联汇编和引用或为什么BYTE PTR [ByteRef]在这种情况下不起作用?
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
}
}
这应该工作在C++函数,对不对?由于Byte是一个引用(它本质上是一个常量指针),因此它必须被取消引用来访问数据......但它不起作用!
在调试以下代码:
mov edx, Byte
;edx = 0x0040f9d3
mov bl, BYTE PTR [Byte]
;bl = 0xd3
我不明白为什么这会发生在所有。