什么是用于ppc的r4?

时间:2017-01-03 01:35:54

标签: assembly reverse-engineering powerpc

标题说了所有,如果有人能解释我的工作会如何令人惊讶,而且我是PPC的新手,而且我被阻挡了R4,我不确定完全理解。

2 个答案:

答案 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或其他此类手册。他们将更详细地介绍寄存器使用情况等。