Lowlevel

Lowlevel => OS-Design => Thema gestartet von: Martin Erhardt am 04. January 2013, 23:24

Titel: Parameter pushen im Longmode
Beitrag von: Martin Erhardt am 04. January 2013, 23:24
Guten Abend,
In den Tuts wird gerne mal ein Paramater auf den gepusht wenn eine Funktion von Assembler ausgerufen wird.
Geht das im Long Mode auch? Ich habe gehört da übergibt man Parameter gerne über Register.
Titel: Re: Parameter pushen im Longmode
Beitrag von: Jidder am 04. January 2013, 23:39
Das stimmt. Wie genau die Parameter übergeben werden, ist von der ABI abhängig. Für ELF ist das hier in Kapitel 3.2.3 beschrieben: http://math-atlas.sourceforge.net/devel/assembly/abi_sysV_amd64.pdf Die Reihenfolge der Register ist rdi, rsi, rdx, rcx, r8, r9.

Im Zweifelsfall kannst du dir auch anschauen, welchen Code der Compiler für den Funktionsaufruf erzeugt, wenn du eine Objektdatei disassemblierst.