第4章 arm指令集系统(2)

第4章 arm指令集系统(2)

ID:5563046

大小:581.50 KB

页数:62页

时间:2017-11-18

第4章 arm指令集系统(2)_第1页
第4章 arm指令集系统(2)_第2页
第4章 arm指令集系统(2)_第3页
第4章 arm指令集系统(2)_第4页
第4章 arm指令集系统(2)_第5页
资源描述:

《第4章 arm指令集系统(2)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.2指令集介绍ARM指令集——存储器访问指令ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现。ARM处理器是冯•诺依曼存储结构,程序空间、RAM空间及I/O映射空间统一编址,除对RAM操作以外,对外围IO、程序数据的访问均要通过加载/存储指令进行。存储器访问指令分为单寄存器操作指令和多寄存器操作指令。LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能,这样也就实现了程序散转。3.2指令集介绍ARM存储器访问指令—

2、—单寄存器存取3.2指令集介绍ARM存储器访问指令——单寄存器存取装载指令:LDR目标寄存器,源地址存储指令:STR源寄存器,目标地址存储器源地址目标寄存器存储器目标地址源寄存器3.2指令集介绍ARM存储器访问指令——单寄存器存取装载指令:LDR存储指令:STRxxLDR/STR指令搭配不同的后缀实现不同方式的单寄存器存取操作:字/半字/字节数据控制是/否用户模式控制无/有符号控制常用的加载存储指令如下:LDR字数据加载指令LDRB字节数据加载指令LDRH半字数据加载指令STR字数据存储指令STRB字节数据存储指令STRH半字数据存储指

3、令ARM存储器访问指令——地址形式装载指令:LDR目标寄存器,源地址保存指令:STR源寄存器,目标地址立即数:立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,#0x12]寄存器:寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2]寄存器及移位常数:寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2,LSL#2]ARM存储器访问指令——寻址方式装载指令:LDR目标寄存器,源地址保

4、存指令:STR源寄存器,目标地址零偏移:如:LDRRd,[Rn]前索引偏移:如:LDRRd,[Rn,#0x04]!程序相对偏移:如:LDRRd,labe1后索引偏移:如:LDRRd,[Rn],#0x04注意:大多数情况下,必须保证字数据操作的地址是32位对齐的。0x55R2R50x400000000x123456780x40000000存储器地址应用示例:LDRR2,[R5];将R5指向地址的字数据存入R20x12345678ARM存储器访问指令——单寄存器加载应用0x12345678R1R20x400000000x??0x400000

5、04存储器地址应用示例:STRR1,[R2,#0x04];将R1的数据存储到R0+0x04地址0x12345678+4ARM存储器访问指令——单寄存器存储应用ARM微处理器所支持批量数据加载/存储指令可以一次性实现一片连续的存储器单元和多个寄存器之间进行传送数据。批量数据加载指令用于将一片连续的存储器中的数据传送到多个寄存器中,批量数据存储指令能够实现将多个寄存器中的内容一次性的存放到一片连续的存储器中。ARM存储器访问指令——批量数据加载/存储指令装载指令:LDM源地址,目标寄存器列表存储指令:STM目标地址,源寄存器列表存储器源地址

6、目标寄存器1目标寄存器n存储器目标地址源寄存器1源寄存器nARM存储器访问指令——批量数据加载/存储指令装载指令:LDM存储指令:STMxxLDM/STM指令搭配不同的后缀实现不同方式地址增长方式:IA:每次传送后地址加4IB:每次传送前地址加4DA:每次传送后地址减4DB:每次传送前地址减4ARM存储器访问指令——批量数据加载/存储指令数据块传送指令操作过程如右图所示,其中R1为指令执行前的基址寄存器,R1’则为指令执行后的基址寄存器。R5R6R7R1R1’指令STMIAR1!,{R5-R7}4008H4004H4000H4014

7、H4010H400CHR5R6R7R1R1’指令STMDAR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1R1’指令STMIBR1!,{R5-R7}4008H4004H4000H4014H4010H400CHR5R6R7R1’R1指令STMDBR1!,{R5-R7}4008H4004H4000H4014H4010H400CH0x40000000R1R20x??0x010x400000000x??R3R40x??R60x??0x020x030x040x400000040x400

8、000080x4000000C存储器0x010x020x030x040x40000010应用示例:LDMIAR1!,{R2-R4,R6}将R1指向的内存数据读取到R0-R4和R6寄存器中ARM存储器访问指令

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。