如何在汇编级实现返回值?

时间:2010-10-07 07:50:04

标签: assembly return-value

int main(void){

printf("Hello World");

return 0;

}

0 如何作为程序集级别的返回值传递?这项工作是否有专用的CPU寄存器?

更新

这是关于pdf中传递/返回数据的2个表,但似乎没有关于如何确定API的调用约定以及哪个寄存器用于存储返回地址的确切信息:

alt text

alt text

2 个答案:

答案 0 :(得分:11)

这取决于架构。仅举几个例子,在x86上,EAX寄存器通常用于返回值。在x86-64上,它是RAX。在SPARC上,它通常会显示在%o0中。

答案 1 :(得分:4)

这是application binary interface

的一部分

这些天,返回值和函数参数通常在寄存器中传递,因为这是最有效的选项。只有当它对于可用的寄存器来说太大时才使用堆栈。