电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

PowerPC栈帧分析

8页
  • 卖家[上传人]:jiups****uk12
  • 文档编号:88918953
  • 上传时间:2019-05-13
  • 文档格式:DOC
  • 文档大小:493KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、PowerPC栈帧分析1 .PowerPC寄存器的使用规则通用寄存器的用途:r0在函数开始(function prologs)时使用。r1堆栈指针,相当于ia32架构中的esp寄存器,idapro把这个寄存器反汇编标识为sp。r2内容表(toc)指针,idapro把这个寄存器反汇编标识为rtoc。系统调用时,它包含系统调用号(这个好像跟系统有关吧)。r3作为第一个参数和返回值。r4-r10函数或系统调用开始的参数。r11 用在指针的调用和当作一些语言的环境指针。r12 它用在异常处理和glink(动态连接器)代码。r13 保留作为系统线程ID。r14-r31 作为本地变量,非易失性。专用寄存器的用途:lr链接寄存器,它用来存放函数调用结束处的返回地址。ctr 计数寄存器,它用来当作循环计数器,会随特定转移操作而递减。xer 定点异常寄存器,存放整数运算操作的进位以及溢出信息。msr 机器状态寄存器,用来配置微处理器的设定。cr条件寄存器,它分成8个4位字段,cr0-cr7,它反映了某个算法操作的结果并且提供条件分支的机制。2.栈帧的使用规则PowerPC寄存器没有专用的Pop,Push

      2、指令来执行堆栈操作,所以PowerPC构架使用存储器访问指令stwu,lwzu来代替Push和Pop指令。PowerPC处理器使用GPR1来将这个堆栈段构成一个单向链表,这个单链表的每一个数据成员,我们称之为堆栈帧(Stack Frame),每一个函数负责维护自己的堆栈帧。PowerPC体系结构中栈的增长方向是从高地址到低地址,堆的增长方式是从低地址到搞地址,当两者相遇时就会产生溢出。堆栈帧的格式如下:各部分名词解释:函数参数域(Function Parameter Area):这个区域的大小是可选的,即如果如果调用函数传递给被调用函数的参数少于六个时,用GPR4至GPR10这个六个寄存器就可以了,被调用函数的栈帧中就不需要这个区域;但如果传递的参数多于六个时就需要这个区域。局部变量域(Local Variables Area):通上所示,如果临时寄存器的数量不足以提供给被调用函数的临时变量使用时,就会使用这个域。CR寄存器:即使修改了CR寄存器的某一个段CRx(x=0至7),都有保存这个CR寄存器的内容。通用寄存器GPR:当需要保存GPR寄存器中的一个寄存器器GPRn时,就需要把从G

      3、PRn到GPR31的值都保存到堆栈帧中。浮点寄存器FPR:使用规则共GPR寄存器。3.PowerPC的汇编指令和栈操作 PowerPC寄存器没有专用的push和pop指令来执行堆栈操作,所以PowerPC构架使用存储器访问指令stwu、lwzu来代替push和pop指令。4.函数执行时栈帧的建立与消亡过程函数栈的建立与消亡过程如下图所示:4.1函数栈的建立与消亡过程说明如前所属,PowerPC体系结构中栈的增长方向是从高地址到低地址,故形成过程可以概括为如下几点:1) 调用函数r1指向栈顶(SP),用间接寻址方式分配一定大小栈空间;2) r31指向栈顶,以r31为基值将参数压入栈内;3) 进入被调函数,跳转到被调函数的SP处;4) 被调函数同样进行栈分配及参数压栈操作;5) 被调函数执行完毕之后,跳转LR,返回到被调用处的下一条指令,继续后续操作(此时的SP即为调用函数的SP)4.2举例说明栈操作过程以下以一个简单的函数调用,说明PowerPC栈的操作过程。函数例子如下:int calltest2( int a) int t1=5; int t2 = 6; int result =0;

      4、 char * p =0; *p =a; int calltest1( int a) int t1=3; int t2 = 4; int result =0; result = calltest2( t2); t1 =3;void calltest( ) int t1=7; int t2 = 9; int result =0; result = calltest1( t1); t1 =3;利用反汇编工具,生成汇编代码及分析如下:int calltest2( int a)Calltest2栈帧建立分析:stwu r1,-48(r1):分配48字节的栈帧,r1指向栈顶;(powerpc省略了EBP,所以一上来即进行一次间接寻址)stw r31,44(r1):保存r31的原值,以后恢复;or r31,r1,r1:让r31指向栈顶r1(r31=r1 or r31)stw r3,8(r31):第一个形参0x401d4f0 calltest2: stwu r1,-48(r1)0x401d4f4 +0x004: stw r31,44(r1)0x401d4f8 +0x008: or r31,r1,r1

      5、0x401d4fc +0x00c: stw r3,8(r31)局部变量赋值:li r0 5(t1,t2.result) int t1=5;0x401d500 +0x010: li r0,0x5 # 50x401d504 +0x014: stw r0,12(r31) int t2 = 6;0x401d508 +0x018: li r0,0x6 # 60x401d50c +0x01c: stw r0,16(r31) int result =0; 0x401d510 +0x020: li r0,0x0 # 00x401d514 +0x024: stw r0,20(r31) char * p =0;0x401d518 +0x028: li r0,0x0 # 00x401d51c +0x02c: stw r0,24(r31)加载函数调用参数到r9 *p =a;0x401d520 +0x030: lwz r9,24(r31)0x401d524 +0x034: lbz r0,11(r31)保存r9到r00x401d528 +0x038: stb r0,0(r9) r11=r1,r31=r11-4=r

      6、1-4,恢复r31的值0x401d52c +0x03c: lwz r11,0(r1)0x401d530 +0x040: lwz r31,-4(r11)0x401d534 +0x044: or r1,r11,r11blr:跳转到LR地址,返回calltest1中调用calltest2的下一条指令地址0x401d57c的继续指向0x401d538 +0x048: blr int calltest1( int a)0x401d53c calltest1: stwu r1,-48(r1)将LR内容存入r0(存在函数调用时需要用到LR,用来存放函数调用结束处的返回地址)0x401d540 +0x004: mfspr r0,LR0x401d544 +0x008: stw r31,44(r1)0x401d548 +0x00c: stw r0,52(r1)0x401d54c +0x010: or r31,r1,r10x401d550 +0x014: stw r3,8(r31)局部变量赋值(t1,t2,result) int t1=3;0x401d554 +0x018: li r0,0x3 # 30x401d558 +0x01c: stw r0,12(r31) int t2 = 4;0x401d55c +0x020: li r0,0x4 # 40x401d560 +0x024: stw r0,16(r31) int result =0;0x401d564 +0x028: li r0,0x0 # 00x401d568 +0x02c: stw r0,20(r31)函数调用 result = calltest2( t2);0x401d56c +0x030: lwz r3,16(r31)0x401d570 +0x034: bl 0x401d4f0 # calltest20x401d574 +0x038: or r0,r3,r30x401d578 +0x03c: stw r0,20(r31) t1 =3;0x401d57c +0x040: li r0,0x3 # 30x401d580

      《PowerPC栈帧分析》由会员jiups****uk12分享,可在线阅读,更多相关《PowerPC栈帧分析》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.