Was bedeuted npad
-
Hallo,
ich stöbere gerade ein bissl in dem vom Visual C++ Compiler für AMD K7 erzeugten Listings rum und stoße dort auf einen Befehl
npad 4
Ich vermute, dass es ein Makro für die Ausrichtung der Daten o.ä. ist, kann den Befehl aber in keiner Referenz finden...
Oder vielleicht doch ein Mnemonic?Weiß jemand mehr
-
schau doch mal im debugger, was der compiler an der betreffenden stelle tatsächlich getan hat. der befehl selbst ist mir auch noch nie untergekommen, ich würde auch tippen, dass es für sowas wie n-padding steht, also für das füllen mit nops o.ä. um den nächsten befehl auszurichten, wäre also in gewisser weise ein ersatz für align. ein mnemonic ist es jedenfalls nicht.
-
Hier mal die komplette Ausgabe:
$L273: ; 10 : for (i=0; i<j; i++) 00006 33 d2 xor edx, edx 00008 85 f6 test esi, esi 0000a 7e 29 jle SHORT $L274 0000c 8d 64 24 00 npad 4
Aber müsste er dann nicht um 2 Aufrunden und nicht um 4 ?
-
wieso 2? offenbar fügt
npad n
n bytes ein, die im grunde nichts tun, also weder register, flags, speicher etc. verändern. der sinn des ganzen dürfte die nächste operation, die darauf folgt, sein, eine ausrichtung auf 16 byte grenzen hat sinn, wenn es es sich um ein häufiges sprungziel handelt.
in diesem fall praktisch equivalent zu .align 16
-
Ja, logisch,
habe die Opcodes für sich selber gezählt
Aber die fangen ja bei 00006 an, dann hauts natürlich hin.Danke