【发布时间】:2021-07-27 07:44:04
【问题描述】:
我实际上是汇编初学者 (Nios II),我知道函数参数存储在寄存器中 (r4 -> r7) 但我想知道这些寄存器是否包含参数的实际值或它的地址?
例如 C 函数:
int add (int x, int y) {}
r4 是否包含 'x' 或 '&x' ?
【问题讨论】:
-
怎么知道参数存放在
R4->R7?高度依赖处理器。 ARM 处理器至少有 16 个寄存器可供使用。编译器选择寄存器。您的目标是哪个平台(处理器)? -
顺便说一句,你是在混合 C 和 C++ 语言吗? C++ 语言允许您重载函数和运算符,而 C 不允许。混合使用这两种语言会使您的程序更加复杂,并且会出现更多缺陷。我建议选择一种语言并更新您的标签。
-
我的目标是(Nios II),我读到参数存储在 R4,5,6,7 中。如果还有更多参数,则将它们存储在堆栈指针中。
-
将简单代码添加到您的
add函数中,然后告诉编译器打印汇编语言。 :-) 这就是您正确获取接口并知道可以使用哪些寄存器的方法。
标签: c assembly calling-convention nios