Вызов функции во встроенной сборке gcc - PullRequest
5 голосов
/ 02 ноября 2011

Скажем, я хочу вызвать функцию со следующей сигнатурой во встроенной сборке gcc. Как я могу это сделать?

int some_function( void * arg );

1 Ответ

8 голосов
/ 02 ноября 2011

Как правило, вы хотите сделать что-то вроде

void *x;
asm(".. code that writes to register %0" : "=r"(x) : ...
int r = some_function(x);
asm(".. code that uses the result..." : ... : "r"(r), ...

То есть вы вообще не хотите выполнять вызов функции во встроенном ассемблере. Таким образом, вам не нужно беспокоиться о деталях соглашений о вызовах или об управлении кадрами стека.

...