5045|10

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

100分问一个关于arm汇编的奇怪问题,急救 [复制链接]

在visual studio 2005下反汇编(arm汇编)一段c语言程序,汇编指令中出现以下类似指令:
add         r3, r8, #1, 20
sub         sp, sp, #0x9E, 30
mov         r2, #0x1E, 20

这些语句的参数个数跟arm指令手册上相关指令的格式不相符,无法理解其含义,希望熟悉arm汇编的朋友能帮忙解释一下。
此帖出自ARM技术论坛

最新回复

8楼的兄弟是正解的,就是这个原因,刚才在一份英文文档上面查到了。 这是由于arm指令要求立即数必须是一个8bit数通过循环右移偶数位而得到,而某些立即数可以有多种移位方式, 汇编器有其选择的方式,即选取循环右移位数最少的移位方式,同时允许在指令中指定产生立即数的移位方式。 所以对于一条含有立即数的指令,如add指令,其可以有两种方式: add         r3, r8, #1, 20 指令直接指定立即数=1循环右移20位(0x1000) 该指令等价于 add         r3, r8, #0x1000   详情 回复 发表于 2008-3-17 15:01
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么没人回复啊,自己顶一下,哈哈
此帖出自ARM技术论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
后面的20 30没有用的,应该.
此帖出自ARM技术论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
20 30是flags + kernel base
此帖出自ARM技术论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
add r3, r8, r2          @ flags + kernel base
此帖出自ARM技术论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 
flags + kernel base
此帖出自ARM技术论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
up
此帖出自ARM技术论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 
  up  看不懂~
此帖出自ARM技术论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 
标准的ARM指令啊。

add         r3, r8, #1, 20  
sub         sp, sp, #0x9E, 30
mov         r2, #0x1E, 20  
这三条都是常规数据操作指令,立即数寻址。
分别是以下含义:
r3 =  r8 + (1循环右移20位)
sp = sp - (0x9E循环右移30位)
r2 = 0x1E循环右移20位。

在ARM指令中,常规数据操作指令可以用这种立即数(杂项数据操作指令不能用立即数),
但由于ARM是精简指令集,所有指令长度一样,受指令长度的限制,
并不是所有的数都可以用作立即数寻址。
因为在立即数寻址方式中,ARM只提供了12bit来放数据。
其中8位是用来记录数值的,另外4位放移位的位数,以此来形成一个立即数。
立即数必须合以下要求,否则汇编时会报错:
可以由一个8位的数循环右移偶数位(只有4位来记录移位值)来形成这个值。

对于不合要求的数,只能用其它方式先加载到寄存器,再作运算了。
比如用伪指令。
LDR Rn,=#立即数。

ARM的手册上有这些信息啊。看好多书上也都讲了的。



此帖出自ARM技术论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
报告,以上回答错误,看错题了。哈哈。
太失败了。
此帖出自ARM技术论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
8楼的兄弟是正解的,就是这个原因,刚才在一份英文文档上面查到了。
这是由于arm指令要求立即数必须是一个8bit数通过循环右移偶数位而得到,而某些立即数可以有多种移位方式,
汇编器有其选择的方式,即选取循环右移位数最少的移位方式,同时允许在指令中指定产生立即数的移位方式。

所以对于一条含有立即数的指令,如add指令,其可以有两种方式:

add         r3, r8, #1, 20

指令直接指定立即数=1循环右移20位(0x1000)

该指令等价于
add         r3, r8, #0x1000

此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表