标题说了所有,如果有人能解释我的工作会如何令人惊讶,而且我是PPC的新手,而且我被阻挡了R4,我不确定完全理解。
答案 0 :(得分:2)
r4
只是一个定点通用寄存器;除了存储整数值之外,它在硬件方面没有特殊功能。
但是,大多数软件ABI使用r4
作为函数调用的第二个(整数)参数。
[注意,“整数”包括这里的指针类型]
查看“PowerISA”文档,了解POWER指令集架构的完整详情:https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0
答案 1 :(得分:0)
PowerPC具有32个通用寄存器(GPR),通常可用作指令中的目标或源。 r4
是这些通用寄存器之一。 This site包含对寄存器的常见用法的描述。
应用程序二进制接口(ABI)提供了一组关于函数调用约定的规则。在最常见的PPC ABI中,r4
用于保存函数的第二个参数。例如,您可以使用一组简单的函数:
.func1:
# ...
# foo = func2(8, 9);
# ...
# Prologue to save SP, etc. omitted
li r3, 8
li r4, 9
bl .func2
# Eplogue to restore stack, saved registers, return to caller omitted
.func2:
# Add two numbers together
# int32_t func2(a, b) { return a+b; }
# r3 = a, first argument
# r4 = b, second argument
# return value in r3
# Note: no need for a prologue or epilogue because we didn't modify saved registers and this is a leaf function
add r3, r3, r4
blr
虽然r3
通常用于返回值,但r3
可以与r4
结合使用来自函数的64位返回值。
查看ST Manual for Book E processors或其他此类手册。他们将更详细地介绍寄存器使用情况等。