吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5075|回复: 6
收起左侧

[Android 原创] android so调试时遇到的坑 - arm流水线

[复制链接]
dlive 发表于 2016-3-16 23:53
直接看下面这段ARM汇编:
1.png
此时运行到的代码为ADD R3,PC
此时看一下寄存器窗口的值:
2.png
按理来说执行完ADD R3,PC后的效果应该是R3=R3+PC,R3=40A1D5C8
但是我们可以执行以下看看实际的值是什么
3.png
我擦。。。居然和我们算的不一样。。。R3的值变成了40A1D5CC,比我们计算的值多了4这是为什么呢?
这里引入一些ARM的流水线机制
ARM7的三级流水线示意图:
4.png
ARM9的五级流水线示意图:
            5.png
很明显的可以看出,不管是三级流水线还是五级流水线,每条ARM指令都有一个取指,解码,执行的过程。
         第一条指令处于执行的周期时,第三条指令已经开始了取指的操作,这就导致了我们之前看到的情况。IDAPC指向的那条指令已经处于执行阶段,真实的PC的值应该是指向处于取值阶段的下下条指令,而这条指令的地址比当前执行的指令地址大4,所以实际结果比我们计算的结果大了4

免费评分

参与人数 1热心值 +1 收起 理由
Hmily + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

adie 发表于 2016-3-19 10:41
谢谢楼主的提醒了
又学习一件了
nothinglhw 发表于 2016-4-4 16:15
xiaomi1991 发表于 2016-4-6 08:35
echo579 发表于 2016-11-13 20:27
膜一下我泽神
killyouiii 发表于 2017-1-15 22:48
谢谢楼主的提醒了
又学习一件了
KelvinLaw 发表于 2017-1-18 07:32 来自手机
原来这么回事。。感谢提醒
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表