Springen Sie nicht unterzeichnet-Anweisung in c

test ecx,ecx
jns 00400000

ist dieser Assembler-code äquivalent zu dieser c-code?

int ECX;
if((ECX>>31)==1){..}

wenn nicht, wie kann ich es machen das äquivalent?

Vielen Dank für Ihre Hilfe.

Hmmm, wie wäre es if (ecx < 0)?
unsigned int ECX hat
Deinen C-code kann concidered als gleichwertig.
Auf den meisten Implementierungen (ECX>>31)==1 ist immer false, da >> auf Ganzzahlen mit Vorzeichen behandelt wird als arithmetische Verschiebung, woraus sich (ECX>>31)==-1.
jeder code, der versucht, das zu tun diese Art der emulation von Computer-Anweisung Logik sollte mit unsigned-Typen. Unterzeichnet Typen sind voll von der Implementierung definierte und Undefinierte Verhalten, wenn es um die Arten von Dinge, die Sie tun möchten, für diese Art von Anwendung.

InformationsquelleAutor Mike L | 2014-07-02

Schreibe einen Kommentar