Microsoft内联汇编和引用,或者在这种情况下为什么BYTE PTR [ByteRef]不起作用?
|
好的,所以我有一个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
我不明白为什么会这样。
没有找到相关结果
已邀请:
1 个回复
恋卡
当您访问
处的值时,它将访问指针值的第一个字节(指向的地址)而不是指向的值。