【3分钟秒懂】结合汇编代码解析C函数入参与PowerPC芯片寄存器的关系


本文没有面面俱到地解释每一个PowerPC寄存器,只抽取相关的寄存器结合汇编代码解析C函数入参与芯片寄存器的关系,让你3分钟内秒懂。

1. PowerPC 通用寄存器简介

PowerPC 处理器有 32 个 GPR(通用寄存器)分别是:r0,r1,r2…r31
与本文相关的通用寄存器为下面粗体部分:
r0   
r1   堆栈指针SP
r2   
r3   作为第一个参数和返回值。
r4-r10  函数或系统调用开始的参数。

r11  
r12  
r13  
r14-r31

2. 代码实例解析C函数入参与芯片寄存器的关系

2.1 以一个3个参数的C函数为例子(无需关注函数内部实现)
代码如下:

//write by liuyanqiu
void GetSystemStackInfo(UINT16 *pcurUsed,
                        UINT16 *pmaxUsed,
                        UINT16 *pthreshold)
{
   
    extern UINT32 *pxSystemStackPointer;
    extern UINT32 _stack_addr[];
    extern UINT32 _stack_end[];
    UINT32 * system_stack_ram;						        
	const UINT32 ulCheckValue = ( UINT32 ) 0xa5a5a5a5;	
    system_stack_ram=_stack_end;
    
    while(*system_stack_ram == ulCheckValue)
    {
   
        system_stack_ram++;
    }
    *pmaxUsed=(_stack_addr-system_stack_ram)*4;
    *pthreshold=(_stack_addr-_stack_end)*4;
    *pcurUsed=(_stack_addr-pxSystemStackPointer)*
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值