找回密码
 注册
搜索
查看: 709|回复: 0

[ARM资料] 求教各位大虾:ARM7TDMI异常退出恢复PC的问题

[复制链接]
发表于 2007-12-21 20:27:13 | 显示全部楼层 |阅读模式
我看到书上的表(我上传上来了,是ARM7TDMI的,3级流水线)
有几个地方不明白:
1、书上说当前PC指向的是预取指令的地址,而不是当前在执行的指令。当发生异常时,当前指令执行完毕,所有预取的指令都丢弃[/COLOR],指令的执行从异常向量开始。——是不是被译的那条指令也丢弃了?那么恢复时这两条指令还执行不?
2、进入异常时,比如执行BL指令进入异常时,当前PC值+4保存到R14——R14存储的是预取的指令的下一条指令的地址吗?
退出异常时,返回用MOV PC,R14恢复PC值,恢复后的PC为BL取指的地址[/COLOR]——PC为BL取指的地址是什么意思?我不明白的是返回后要执行的第一条语句是不是PC指向的地址的指令,如果是那么在进入异常前的被译指令和预取的指令都不能被执行了?如果不是,那么是不是执行PC-8指向的指令?
3、数据中止进入异常时R14=PC+8——为什么加8?
返回时用SUBS PC,R14_abt,#8恢复PC,恢复后的PC为产生数据中止的转载或保存指令的地址——怎么恢复后PC指向了产生数据中止的装载或保存指令了?不是产生数据中止的装载或保存指令的下面第二条指令吗,也就是进入异常前的预取的指令吗?
按理说返回时PC指向的是下一条指令啊,也就是发生异常的指令的下一条,不知道我理解错了没有。
各位大哥大姐们,小弟初学ARM7TDMI,可能自己比较苯,有许多地方看不懂,希望大哥大姐们帮帮忙,解答解答,小弟在这里谢谢了!!
[upload=jpg]UploadFile/2007-12/071221@52RD_异常入出口表.JPG[/upload]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-26 01:48 , Processed in 0.045124 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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