我可以使 gcc 将特定功能( C 或 C ++ )参数放入特定寄存器吗?我想定义一些裸代码使用的函数原型,它利用这个寄存器作为基础。我的意思是类似this,但是朝向函数参数。
答案 0 :(得分:1)
您不能请求将特定函数参数放在给定的寄存器中。这是因为函数参数传递给函数的方式由您的体系结构的ABI定义。例如,在x86-64上,前6个(整数)参数在寄存器%rdi
,%rsi
,%rdx
,%rcx
,%r8
中传递,和%r9
。
如您所示,您可以使用local register vars将特定的局部变量分配给寄存器,然后将参数复制到该局部变量中。这应该导致参数被复制到该寄存器中。
那就是说,为什么你甚至想要这个?