PowerPC 堆栈

PowerPC处理器没有专门的堆栈指令,但在函数调用等场景中使用堆栈。根据PowerPC EABI,GPR1作为堆栈指针,stw和lwz用于堆栈数据存取,但不更新指针,stwu则会。内联汇编使用这些指令操作栈可能复杂。
摘要由CSDN通过智能技术生成

        PowerPC 在处理器级别上是没有实现堆栈操作的,也就是说,在 PowerPC 架构中,没有专门的堆栈操作汇编命令。但事实上 PowerPC 又使用到了堆栈,比如在函数调用、传参、返回错误码等操作。

        在讲 PowerPC 堆栈处理之前,先提一下要用到的某些寄存器。首先是32个通用寄存器 GPR0 ~ GPR31。据说这32个寄存器是64位的,但是高32位的访问方式不同,通常只用低32位,所以我们暂且把他们当作32位的寄存器来用好了。得意

        按照 PowerPC EABI (Embedded Application Binary Interface) 的说法:GPR0 由于语言的不同而用处不同,gcc 使用 GPR0 来保存 LR 寄存器的值;GPR1 用于存放堆栈指针,通常是栈顶指针;GPR3 ~ GPR4 用于传参和保存返回值;GPR5 ~ GPR10 也用于传参;GPR13 保存 sdata 段的段基址;GPR14 ~ GPR31 是可供用户自由使用的。LR 寄存器保存返回地址。

        操作堆栈,通常使用到两个类型的指令:{stw, stwu} 和 lwz。

stw

stw rA, off(rB)

        stw 相当于 push,表示32位的 rA 寄
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值