arm 汇编中 +.-的意思??

googlex 2007-01-22 04:43:25
add r2, pc,#-(8+.-CInitData) ; @ where to read values (relative)
...全文
529 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenbe 2007-02-09
  • 打赏
  • 举报
回复
. 代表是当前pc值,CInitData是下面几行的dcd出来的
这行意思是,将r2指针指到 dcd 那个区域中。
他是以相对的差值来计算的,假设当前指针和CInitData的差值是X
CInitData的指针是C, C = .+X ,但是这样无法直接赋值(不信,你mov r0, #CInitData试试,编译可以通过,但执行不通过),只能采用和pc相对值来换算,
但因为arm有预取址(三级流水线),pc与当前指针的值差为8( . = PC-8 )
所以 CInitData = . + (CInitData-.)
= pc-8 +CInitData-.
= pc - (8-CInitData+.)
由此看出r2指向的就是CInitData的位置。

2,179

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧