| Zeile 61: | Zeile 61: | ||
Die Pascal-Aufrufkonvention gibt vor, dass die Parameter, beginnend mit dem ersten, auf den Stack gelegt werden. Außerdem muss die aufgerufene Funktion den Stackpointer zurücksetzen. | Die Pascal-Aufrufkonvention gibt vor, dass die Parameter, beginnend mit dem ersten, auf den Stack gelegt werden. Außerdem muss die aufgerufene Funktion den Stackpointer zurücksetzen. | ||
| + | == stdcall == | ||
| + | stdcall ist die Standartaufrufkonvention unter 32bit-Windows Systemen. Es gleicht in den meisten Aspekten cdecl, allerdings muss die Aufgerufene Funktion den Stack am Ende mit einem "ret n" (Wobei n für die Größe der Parameter auf dem Stack steht) ausgleichen. | ||
| + | |||
== Register- oder Fastcall-Konvention == | == Register- oder Fastcall-Konvention == | ||
| − | + | Viele Compiler bieten zusätzlich auch noch eine Register- oder Fastcall-Konvention an, die aber meist Compilerspezifisch ist. Bei dieser werden aus Geschwindigkeitsgründen die ersten zwei oder drei Parameter in die Register EAX, EDX und ECX gespeichert. Die übrigen Parameter werden, beginnend mit dem letzen, auf den Stack gelegt. Der Rückgabewert wird in AL, AX oder EAX übergeben. | |
<c> | <c> | ||
int a,b,c,d,e,r; | int a,b,c,d,e,r; | ||
| Zeile 83: | Zeile 86: | ||
mov r,eax | mov r,eax | ||
</asm> | </asm> | ||
| + | |||
== Links == | == Links == | ||