Der folgende Code in C# in VS2010 geschrieben für .Net 4.0:.Net-Assembly fügt überflüssiges AND hinzu, wenn bool auf TRUE gesetzt wird?
bool b = false;
hat die folgende Zerlegung:
XOR EDX,EDX
MOV DWORD PTR[EBP-3Ch],EDX
, die durchaus Sinn macht.
jedoch der folgende Code:
bool b = true;
hat die folgende Zerlegung:
MOV EAX,1
AND EAX,0FFh
MOV DWORD PTR[EBP-3Ch],EAX
Was ist der Zweck der AND
Betrieb? Warum nicht einfach MOV EAX,1
?
Line | EAX
-----------
1 | 0x01
2 | 0x01 & 0xFF = 0x01
3 | 0xFF
'0x01 & 0xFF = 0x01', nein? – Blorgbeard
Hmm, es scheint, als würde es die hohen Bytes von EAX löschen, aber 'MOV EAX, 1' sollte das trotzdem tun. – Blorgbeard
Wie finden Sie die Hardware-Baugruppe für eine CLR-Quelle? – SAJ14SAJ