ARM中的判断立即数是否合法寻址中怎样判断合法常数

Arm寻址方式 -1
9.对于 ARM 的变址寻址方式,有基地址和偏移地址两部分组成。 (1)基地址可以是哪些寄存器?(2)偏移地 址可以有哪些形式?(3)总地址的计算方法有哪些?(4)变址...
ARM寻址方式和答案_电子/电路_工程科技_专业资料。ARM 寻址方式实验二 一、实验目的 1. 理解各种寻址方式:立即数;寄存器;寄存器移位;寄存器间接寻址;变址寻址。 2...
第 3 章 ARM 指令集寻址方式 3. 在 ARM 指令中,什么是合法的立即数?判断下面各立即数是否合法,如果合 法则写出在指令中的编码格式(也就是 8 位常数和 4 ...
31 0 ROR 循环右移 : 31 0 RRX 带扩展的循环右移: 31 C 0 5.ARM 数据处理指令具体的寻址方式有哪些, 如果程序计数器 PC 作为目标寄存器, 会产生 什么结...
能很好的兼容 8/16 未器件 3 大量使用寄存器,指令执行速度更快 4 大多数数据操作都在寄存器中完成 5 寻址方式灵活简单,执行效率高 6 指令长度固定 6、ARM ...
Thumb 指令集指令是 16 位,在功能上是 ARM 指令集的子集,功 能并没有降低。 2、 ARM 指令的寻址方式有几种?并指出下列指令中的寻址方式。 答:ARM 指令的...
ARM指令汇编语言_电子/电路_工程科技_专业资料。ARM 指令集和汇编语言程序 姓名:何瑞平 学号: 专业:电路与系统 本章主要介绍以下内容:一、ARM 寻址方式包...
的寻址方式为( A.立即寻址 C.多寄存器寻址 B.寄存器间接寻址 D.堆栈寻址 寄存器 R13 除了可以做通用寄存器外,还可以做(C) A.程序计数器 D.基址寄存器 ARM ...
1.3 ARM 处理器有几种寻址方式,说明各种寻址的方式。 答: 立即寻址:操作数直接放在指令中。例如:ADD R0,R0,#0x3R0←R0+0x3f 寄存器寻址:操作数放在...
ARM 嵌入式系统基础与开发教程 嵌入式系统基础与开发教程 ---复习题 复习题 ...指出下面各条指令的寻址方式。 SUB R0,R1,R2 寻址方式: ,, ;寻址方式: ...3.2 ARM 指令系统
3.2 ARM 指令系统
嵌入式系统(修订本)——Intel XScale 结构与开发
ARM 指令的寻址方式
每条 ARM 指令都是 32 位指令,在大多数情况下,可以有三个操作数,其中第一操作 数或目的操作数一般为基本操作数方式,ARM 指令的基本寻址方式有:
寄存器寻址
例:ADD R0 , R1 , R2
(R1)+(R2)→R0
立即数寻址
R3 , R3 , #2
(R3)+2→R3
寄存器间接寻址
((R3))→R0
寄存器变址
R0 , [R1, #4]
((R1)+4)→R0
(PC)+rel→PC另外,每条 ARM
指令中还可以有第二和第三操作数,它们采用复合寻址方式,ARM的复合寻址方式有五种:一、第二操作数寻址方式
ARM 运算指令和某些数据传送指令除了目的操作数和第一操作数(它们为寄存器寻址) 外,还具有第二操作数。
该第二操作数具有以下寻址方式:
1.立即寻址 (#immediate_8*r*2)
由 8 位立即数和 4 位移位位 r 决定。r 指定左移 r×2 位,r=0~15,实际上可移位 0、2、
4、6…28、30。例如:实际的立即数可以为 0xFF(r=0)
0xFF0(r=2),
0xFF000000(r=12),
0xF000000F (r=14)等。 例: MOV R0 , #20
2.寄存器直接(Rm) 例: MOV R0 , R1
3.寄存器移位(Rm ,
移位码 #immed_5)
移位码包括: LSL、LSR、ASR、ROR、RRX 中的任何一种,移位数由#immed_5 决定。 详细请见 ARM 数据处理类指令的第二操作数例: MOV R0 , R1
(R1)*2→R0
4.寄存器间接移位 (Rm ,
移位码 Rs) 移位码包括:LSL、LSR、ASR、ROR,移位位数由 Rs 的内容决定。 例: MOV R0 , R1 LSL
(R1)*(R2)→R0
二、字和无符号字节寻址方式
ARM 中的取数指令的源操作数和存数指令的目的操作数采用带偏移量的变址方式,可 以表示为基址+变址寻址。有效地址为基地址寄存器的内容加上偏移量的值。对于字和无符 号字节,寻址方式通常可以包括三种:寄存器间接寻址,前变址偏移寻址和后变址偏移寻址。 带偏移量的变址包括常数或寄存器值。
1.寄存器间接寻址( [Rn] )
R0 , [ R1]
((R1))→R0
(R0)→(R1)
2.前变址偏移寻址( [Rn ,
偏移量]{!})
在数据传送之前,将偏移量加到 Rn 中。其结果作为传送数据的存储地址。若使用后缀 “!”,则结果写回到 Rn 中,且 Rn 不允许是 R15。该寻址方式又分为下列三种:① 立即数偏移 [Rn,#±&immed_12&]{!}例: LDR R0 , [R1 , #5]!
;((R1)+5)→R0,(R1)+5→R1② 寄存器偏移 [Rn, ±Rm]{!}例: LDR
R0 , [R1 , -R2]((R1)-(R2))→R0③ 移位寄存器偏移
[Rn, ±Rm,LSL #&immde_5&]{!} [Rn, ±Rm,LSR#&immde_5&]{!} [Rn, ±Rm,ASR#&immde_5&]{!} [Rn, ±Rm,ROR#&immde_5&]{!} [Rn, ±Rm,RRX]{!}
R0 , [R1 , R2 ,LSL #2]((R1)+(R2)*4)→R0
3.后变址偏移寻址( [Rn] ,
Rn 的值用作传送数据的存储器地址。在数据传送后,偏移量加到 Rn 中,结果写回到Rn。
Rn 不允许是 R15。 该寻址方式又分为下列三种:
①立即数偏移 [Rn], #±&immed_12&例: LDR R0 , [R1] , #4((R1))→R0,(R1)+4→R1②寄存器偏移 [Rn], ±Rm例: LDR
R0 , [R3] , -R8((R3))→R0,(R3)-(R8)→R3③移位寄存器偏移
[Rn], ±Rm,LSL #&immde_5& [Rn], ±Rm,LSR#&immde_5& [Rn], ±Rm,ASR#&immde_5& [Rn], ±Rm,ROR#&immde_5& [Rn], ±Rm,RRX
R0 , [R3] , R8 , LSL #2 ((R3))→R0,(R3)+ (R8)*4→R3三、半字和有符号字节寻址方式
ARM 中的半字和有符号字节取数和存数指令的寻址方式与字和无符号字节的寻址方式 略有不同。
1.寄存器间接寻址( [Rn] )
例如: LDR
R0 , [ R1] STR
2.前变址偏移寻址( [Rn ,
偏移量]{!})
在数据传送之前,将偏移量加到 Rn 中。其结果作为传送数据的存储地址。若使用后缀 “!”,则结果写回到 Rn 中,且 Rn 不允许是 R15。该寻址方式又分为下列二种:①立即数偏移 [Rn,#±&immed_8&]{!}例:
LDR R0 , [R5 , #22]!((R5)+22)→R0,(R5)+22→R5②寄存器偏移 [Rn, ±Rm]{!}例:
R0 , [R3 , -R8](R0)→(R3)-(R8),(R3)-(R8)→R3
3.后变址偏移寻址([Rn ] ,
的值用作传送数据的存储器地址。在数据传送后,偏移量加到 Rn
中。结果写回到
Rn,Rn 不允许是 R15。 该寻址方式又分为下列三种:
①立即数偏移 [Rn],#±&immed_8&例:
LDR R0 , [R5] , #22((R5))→R0,(R5)+22→R5②寄存器偏移 [Rn], ±Rm例:
R0 , [R3] , -R8(R0)→(R3),(R3)-(R8)→R3四、块寻址
ARM 对堆栈的使用一般用多寄存器传送指令,是一种有效的保存处理器状态和多 字节传送的有效方式。ARM 硬件中的堆栈分为以下四种类型:
①满向上生长型:堆栈按高地址方向生长,当前堆栈指针指向一个有效值;②空向上生长型:堆栈按高地址方向生长,当前堆栈指针指向一个空值;③满向下生长型:堆栈按低地址方向生长,当前堆栈指针指向一个有效值;④空向下生长型:堆栈按低地址方向生长,当前堆栈指针指向一个空值。图 3-2 说明了 4 条带不同变量的多字节传送指令传送前后的内存变化,以及基寄存 器如何变化,指令执行前的基寄存器是 R9
,指令执行后的基寄存器是 R9’。R9&
R5R1101816R9&
R0101816R9
100C16100016R9
100C16100016
R9! , {R0 , R1 , R5}
R9! , { R0 , R1 , R5 }
R9! , {R0 , R1 , R5}
R9! , { R0 , R1 , R5 }
多寄存器传送示意图 常见多字节传送指令如表 3-1表 3-1
常见多字节传送指令
一般数据存取
空向下生长型(之前增量)
满向下生长型(之后增量)
空向上生长型(之前增量)
满向上生长型(之后增量)
满向上生长型(之前增量)
空向上生长型(之后增量)
空向下生长型(之前增量)
满向下生长型(之后增量)
FD, ED, FA, EA
后缀只在堆栈时使用。F
分别代表堆栈指针指向为满或空。A
分别表示堆栈是否向上或向下生长。例如:堆栈如果是向上生长,STM
指令向上存放,
LDM指令向下读取。IA, IB, DA, DB
后缀在一般数据传送时使用。 注意:LDMED与LDMIB是同一条指令(下同)。
五、协处理器寻址方式
ARM 协处理器寻址方式包括以下四种方式:
1.寄存器直接变址 ([Rn])
2.前变址偏移寻址([Rn, #±&immed_8*4&]{!})
3.后变址偏移寻址([Rn], #±&immed_8*4&)
带参数无偏移寻址 ([Rn],{8-bit copro. Option })[操作系统]入门 ARM 汇编(二)—— 寻址方式
你的位置:
[操作系统]入门 ARM 汇编(二)—— 寻址方式
忧愁他整天拉着我的心,像一个琴师操练他的琴;悲哀像是海礁间的飞涛:看他那汹涌,听他那呼号!&&&徐志摩&四行诗一首ilocker:关注 Android 安全(新入行,0基础) QQ: 立即数寻址源操作数为立即数,多用于给寄存器赋初值。&指令执行后,R1 寄存器的值就是 2。立即数也可为:十六进制,# 后跟 0x;八进制,# 后跟 0;二进制,# 后跟 0b。立即数有合法性限制,具体可 google 相关资料。寄存器寻址操作数的值在寄存器中。&指令执行后,R0 = R5。速度仅次于立即数寻址。寄存器移位寻址类似于寄存器寻址,只是在操作前先对源寄存器操作数进行移位操作。& LSL:逻辑左移,低位补 0& LSR:逻辑右移,高位补 0& ASR:算术右移,移位过程中保持符号位不变(如果源操作数为正数,高位补 0,否则补 1)& ROR:循环右移,移出的低位填入空出的高位& RRX:带扩展的循环右移,高位用进位标志位 C 填充(标志位 C 在 CPSR 中)&指令执行后,R1 = R8 * 8。.W 表示生成 32 位指令。寄存器间接寻址由寄存器值指出操作数在内存中的地址。&将 R4 寄存器值作为地址,取出此地址中的值赋给 R6。基址寻址与寄存器间接寻址有些类似,多用于查表、数组访问等操作。&将 R1 寄存器值加 1 作为地址,取出此地址中的值赋给 R0。LDR 后面加 B,表示是从内存加载字节数据到寄存器。多寄存器寻址&LDM 是数据加载指令,后缀 IA 表示每执行完一次加载操作后 R6 寄存器的值自增 1 个字。指令执行后,R0 = [R6],R1 = [R6 + #4],R2 = [R6 + #8],R3 = [R6 + #12]。ARM 指令集中,一个&字&表示一个 32 位的数值。多寄存器寻址的一条指令最多可以完成 16 个通用寄存器值的传送。R6 后面的叹号,表示指令执行后,更新基址寄存器 R6 的值。否则,指令执行后 R6 的值是不变的。堆栈寻址LDM 和 STM 作为指令前缀,表示多寄存器寻址。FA、EA、FD、ED 作为指令后缀(指明堆栈生长方向和堆栈指针指向位置等,后面会继续学习)。&将数据出栈,保存到 R0、LR,多用于恢复子程序现场。块拷贝寻址LDM 和 STM 作为指令前缀,表示多寄存器寻址。IA、DA、IB、DB 作为指令后缀(指明基址寄存器的递增或递减方式,后面会继续学习)。示例同&多寄存器寻址&。相对寻址将程序计数器 PC 的当前值作为基地址,加上偏移量后得到操作数的有效地址。&这里的 BL 采用的就是相对寻址,标号 __libc_format_log 就是偏移量。学习资料: 《Android 软件安全与逆向分析》
、 、 、 、 、您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
ARM复习课后答案(完整版).doc10页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:150 &&
ARM复习课后答案(完整版)
你可能关注的文档:
··········
国内嵌入式系统行业对嵌入式系统的定义是什么?如何理解
以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 从这个定义看以看出嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统要求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而量身定做的专用计算机系统。
当前最常见的源码开放的嵌入式操作系统有哪些,请举出两例,并分析其特点
答:嵌入式linux和嵌入式实时操作系统uc/os-II
linux是源码开放的,每一个技术细节都是透明的,易于裁剪定制。
目前嵌入式linux已经在多种嵌入式处理器芯片移植成功,有大量且不断增加的开发工具,这些工具为嵌入式系统开发提供了良好的开发环境。
Linux内核小、功能强大、运作稳定、效率高。 Ucos: 源代码公开
可移植性。
可确定性。
系统服务 第2章ARM技术与ARM体系结构
arm处理器的工作模式有哪几种,其中哪些为特权模式,哪些为异常模式,并指出处理器在什么情况下进入相应的模式。
答:ARM 处理器共有7 种工作模式:
用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式
下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作
模式,如果有异常发生,处理器会自动切换工作模式
FIQ 模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优
先级 fast 中断产生时将会进入这种模式。
IRQ 模式:也称为普通中断模式,:当一个低优先级中断产生时将会进入这种模
式。在这模式下按中断的处理器方式
正在加载中,请稍后...}

我要回帖

更多关于 立即数寻址指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信