Interfejsowanie C w trybie 64 bitowym
Parametry 64-bit - przykład 2

Uwaga: Jeżeli przesyłamy przez wartość prostą strukturę to jest ona też umieszczana w rejestrach.

typedef struct {
  int a;
  int b;
} Dane;
 
extern int suma(Dane);
...
Dane dane;
int c = suma(dane);

W rejestrze RDI zostanie przesłana cała struktura dane. W starszych 4 bajtach bedzie dane.a, a w młodszych dane.b.

Wynik zwracamy w RAX

Program w C
Moduł w assemblerze


Tomasz Kapela, Kraków 2011-2020