Как возвращается значение на уровне сборки? - PullRequest
6 голосов
/ 07 октября 2010
int main(void){

printf("Hello World");

return 0;

}

Как 0 передается как возвращаемое значение на уровне сборки? Есть ли выделенный регистр процессора для этой работы?

UPDATE

Вот 2 таблицы передачи / возврата данных в pdf, но, похоже, нет точной информации о том, как определяется соглашение о вызовах API и какой регистр используется для хранения адреса возврата:

alt text

alt text

Ответы [ 2 ]

11 голосов
/ 07 октября 2010

Это зависит от архитектуры.Просто для пары примеров на x86 регистр EAX обычно используется для возвращаемых значений.На x86-64 это RAX.На SPARC он обычно будет отображаться в% o0.

4 голосов
/ 07 октября 2010

Это часть двоичного интерфейса приложения .

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

...