以下代码在 .Net 4.0 的 VS2010 中用 C# 编写:
bool b = false;
有以下反汇编:
XOR EDX,EDX
MOV DWORD PTR[EBP-3Ch],EDX
这很有意义。
但是,以下代码:
bool b = true;
有以下反汇编:
MOV EAX,1
AND EAX,0FFh
MOV DWORD PTR[EBP-3Ch],EAX
手术的目的是什么AND
?为什么不只是MOV EAX,1
?
Line | EAX
-----------
1 | 0x01
2 | 0x01 & 0xFF = 0x01
3 | 0xFF