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

Ala*_*lan 6 assembly return-value

int main(void){

printf("Hello World");

return 0;

}
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

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

替代文字

替代文字

Jer*_*fin 13

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

  • @Alan:Agner Fog收集了有关ABI,名称修改方案等的大量文档,可从以下网站获得:http://www.agner.org/optimize/calling_conventions.pdf (2认同)

sta*_*lue 5

那是应用程序二进制接口的一部分。

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