Entwickler-Ecke
Windows API - Assembler Parameter!
Berki - Sa 14.06.03 15:41
Titel: Assembler Parameter!
Hallo!
Habe eine Frage zur Parameterübergabe in Delphi an Assembler routinen. Und zwar: In Delphi ist die Funktion Pos wie folgt deklariert:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure _Pos{ substr : ShortString; s : ShortString ) : Integer}; asm { ->EAX Pointer to substr } { EDX Pointer to string } { <-EAX Position of substr in s or 0 }
PUSH EBX PUSH ESI PUSH EDI |
wieso kommt diese Prozedur ohne Parameter aus, und ist auch noch eine Funktion?????
mfg Daniel
AndyB - Sa 14.06.03 16:00
In Assembler gibt es keinen Funktionen sondern nur Prozeduren. Es hat sich jedoch ein Standard entwickelt in dem das Ergebnis einer Funktion (bei Zahlen, Zeigern) im EAX/AX/AL Register zurückgeliefert wird. Zudem ist die Pos()-Funktion mit Compiler Magic umgeben. Was du also siehst ist nicht das, wass dir der Compiler dann anbietet.
Zu den Parametern:
In Delphi nutzen alle Funktionen/Prozeduren/Methoden als Vorgabe die Aufrufkonvention register. Diese besagt, dass die ersten drei Parameter (von Links her) über die Register EAX, EDX und ECX an die Funktion übergeben werden. Somit spart Delphi die Stack-Operationen womit das Programme schneller wird.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!