我想在Sparc中做一些“内联”汇编编程,我想知道如何通过寄存器传递做到这一点。
最好用一个小例子来解释我的问题

int main()
{
   int a = 5;
   int b = 6;
   int res;

   asm_addition(a,b);

   printf("Result: %d\n", res);
   return(0);
}
  // My assembler addition

.global asm_addition

.align  4

    add rs1, rs2, rd
    restore

是否有人知道我必须使用哪些寄存器才能添加值a和b?最后,我需要为rd指定哪个寄存器,以便在assemly例程之后用最后一个printf语句打印结果。
非常感谢您的帮助!

最佳答案

调用约定可能依赖于操作系统我猜是Solaris谷歌system v application binary interface sparc,PDF很容易找到。
完整的内联汇编程序文档隐藏在SunStudio PDFs中,不太容易找到官方也可以通过man -s 1 inline访问,不过在我的系统上,我必须手动打开文件在MAP页面中,查找“SPARC系统的编码约定”。

关于c - Sparc过程调用约定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3256119/

10-10 08:18