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
我不明白爲什麼這會發生在所有。