我实际上是汇编(NiosII(的初学者,我知道函数参数存储在寄存器中(r4->r7(但我想知道这些寄存器是包含参数的实际值还是地址?
例如C函数:
int add (int x, int y) {}
r4是否包含"x"或"&x'?
以下是Nios II的ABI:https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/nios2/n2cpu_nii51016.pdf从表中,我们可以看出,自变量确实是在寄存器r4
-r7
中传递的,并且它们中的每一个都包含32位。从同一文档中,我们了解到int是4个字节。这意味着x
将在r4
中传递。这里不传递&x
,因为这是按值调用的。如果你想访问x
的地址,好的编译器会先看看是否需要它,只有在放弃后,才会在堆栈帧上分配内存。