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

Jeżeli zwracamy przez wartość prostą strukturę to jeżeli zmieści się ona w rejestrach RAX,RDX,XMM0,XMM1 to tam należy ją umieścić.

Uwaga: musi to już być program C++ bo czyste C nie pozwala zwracać struktur z funkcji.

typedef struct {
  int a;
  int b;
} Dane;
 
extern "C" Dane suma(Dane);
...
Dane dane;
Dane 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