【问题标题】:What is r4 used for in ppc?r4 在 ppc 中是做什么用的?
【发布时间】:2017-01-03 01:35:54
【问题描述】:

标题说明了一切,如果有人可以向我解释它的工作原理,那将是惊人的,而且我是 PPC 的新手,我被 R4 阻止了,我不确定完全理解。

【问题讨论】:

标签: assembly reverse-engineering powerpc


【解决方案1】:

r4只是一个定点通用寄存器;除了存储整数值,它在硬件方面没有特殊功能。

但是,大多数软件 ABI 使用 r4 作为函数调用的第二个(整数)参数。

[注意这里的“整数”包括指针类型]

查看“PowerISA”文档以了解 POWER 指令集架构的完整详细信息:https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0

【讨论】:

    【解决方案2】:

    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 或其他此类手册。他们将有更多关于寄存器使用等的详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      • 2016-03-23
      • 2014-01-13
      相关资源
      最近更新 更多