Die "Warnung: signed dword sofort überschreitet Grenzen" ist der Fluch meiner Existenz im Moment, da es inkonsistent zu sein scheint oder ich sehe einfach kein offensichtliches Tatsache.
Ich habe die folgende Struktur deklariert:
%Vor%Ich habe folgende Zuordnungen:
%Vor%Und in einer Funktion habe ich:
%Vor% Ich weiß, ich kann mov rax, INTEGER
und dann den Vergleich, aber das scheint unnötig, da der erste Vergleich kein Problem hat.
Es gibt kein CMP r/m64,imm64
.
Es gibt CMP r/m64,imm32
, wobei imm32
auf 64 Bit vorzeichenerweitert ist. Was für 0xfffffffffffffff1
funktioniert, weil 0xfffffff1
vorzeichenerweiterte auf 64 Bits ist 0xfffffffffffffff1
. Aber 0x1000a8a9
vorzeichenerweiterte auf 64 Bits ist 0x000000001000a8a9
, was sich von dem Wert unterscheidet, mit dem verglichen werden soll.
Sie könnten dies z.B. indem Sie zuerst das Unmittelbare in ein Register laden:
%Vor%