c语言 - 程序集的函数参数



我实际上是汇编(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的地址,好的编译器会先看看是否需要它,只有在放弃后,才会在堆栈帧上分配内存。

相关内容

  • 没有找到相关文章

最新更新