Il seguente codice scritto in C# in VS2010 per .Net 4.0:. L'assemblaggio netto aggiunge il superfluo E quando si imposta il bool su TRUE?
bool b = false;
ha il seguente smontaggio:
XOR EDX,EDX
MOV DWORD PTR[EBP-3Ch],EDX
che ha perfettamente senso.
Tuttavia, il seguente codice:
bool b = true;
ha il seguente smontaggio:
MOV EAX,1
AND EAX,0FFh
MOV DWORD PTR[EBP-3Ch],EAX
Qual è lo scopo del funzionamento AND
? Perché non solo MOV EAX,1
?
Line | EAX
-----------
1 | 0x01
2 | 0x01 & 0xFF = 0x01
3 | 0xFF
'0x01 & 0xFF = 0x01', no? – Blorgbeard
Hmm, sembra che cancellerebbe i byte alti di EAX, ma 'MOV EAX, 1' dovrebbe farlo comunque .. – Blorgbeard
Come stai trovando l'assembly hardware per una fonte CLR? – SAJ14SAJ