Hallo zusammen,
ich hätte eine Frage zur Assembler-Anzeige.
Man kann in seinen Lazarus Code ja Assembler-Befehle einbauen, z.B.
{$ASMMODE intel}
asm
MOV EAX, 0005
end;
Wenn ich mir einen Breakpoint setze und den zugehörigen
Assembler anzeigen lasse, steht da:
004246E6 b805000000 mov $0x5,%eax
Da sind dann aber die beiden Argumente vertauscht. Wenn die Zahl 5 ins Register
EAX geschoben wird, müsste es doch eigentlich heißen:
mov %eax, $0x5
Warum sind hier in Pascal die Argumente aller Assembler-Befehle in verkehrter Reihenfolge.
Hat das einen Grund?
Vielen Dank schonmal für die Antwort.
mintpc
Assembler --> Warum werden Argumente vertauscht
-
- Beiträge: 1102
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Assembler --> Warum werden Argumente vertauscht
Also in "intel" assembler mode ist es dest,srcmintpc hat geschrieben:
{$ASMMODE intel}
asm
MOV EAX, 0005
end;
Bemerke $<Nummer> und % als Registerprefix. Dies ist ATT style, und die ist src, dest.Wenn ich mir einen Breakpoint setze und den zugehörigen
Assembler anzeigen lasse, steht da:
004246E6 b805000000 mov $0x5,%eax
Ja. AS von binutils nutzt klassisch AT&T. Wenn ich mit FPC anfing, gab es gar kein $asmmode intel.Warum sind hier in Pascal die Argumente aller Assembler-Befehle in verkehrter Reihenfolge.
Hat das einen Grund?
-
- Beiträge: 124
- Registriert: Mo 6. Sep 2010, 18:39
- OS, Lazarus, FPC: Win 7 (L 1.6 FPC 3.0.0)
- CPU-Target: Win 7
- Wohnort: Mailand
Re: Assembler --> Warum werden Argumente vertauscht
Vielen Dank für die Antwort.
Mit den Hinweisen konnte ich nochmal alles nachgoogeln und
bin jetzt klar.
mintpc
Mit den Hinweisen konnte ich nochmal alles nachgoogeln und
bin jetzt klar.
mintpc