- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 散转程序是分支程序的一种, 它可根据运算结果或用户输入数据将程序转入不同的分支. * 前索引偏移指令:LDR R0,[R1,#4] * 若Rn是R15则不能使用! * 若相等,Z=1;否则,z=0。若产生借位,C=0;否则C=1。 * 若产生进位,C=1;否则C=0。 对于加法和减法指令,当发生带符号溢出时,V置1;对于其它费加法和减法指令,V通常不变。 * SWI:0* TST指令:如果指令的结果为0,则Z=1;不等于0,则Z=0 EQ:Z=1;NE:Z=0 * R13:SP R14:LR R15:PC R16:CPSR R17:SPSR * Load ADdRess Load ADdRess long * * armv4l-unknown-linux-gcc * armv4l-unknown-linux-gcc a. 不能直接向PC寄存器赋值,程序跳转要使用B或者BL指令b. 在使用物理寄存器时,不要使用过于复杂的C表达式,避免物理寄存器冲突c. R12和R13可能被编译器用来存放中间编译结果,计算表达式值时可能将R0到R3、R12及R14用于子程序调用,因此要避免直接使用这些物理寄存器d. 一般不要直接指定物理寄存器,而让编译器进行分配 ARM伪指令——中等范围的地址读取 ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。 ... ADRL R0,Delay ... Delay MOV R0,r14 ... 应用示例(源程序): ... 0x20 ADD r1,pc,#40 0x24 ADD r1,r1,#FF00 ... 0xFF68 MOV r0,r14 ... 编译后的反汇编代码: 使用伪指令将程序标号Delay的地址存入R0 地址 程序代码 ARM伪指令——中等范围的地址读取 ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不能用两条指令实现,则产生错误,编译失败。 ... ADRL R0,Delay ... Delay MOV R0,r14 ... 应用示例(源程序): ... 0x20 ADD r1,pc,#40 0x24 ADD r1,r1,#FF00 ... 0xFF68 MOV r0,r14 ... 编译后的反汇编代码: 使用伪指令将程序标号Delay的地址存入R0 ADRL伪指令被汇编成两条指令 ARM伪指令——大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。 LDR{cond} register,=[expr | label_expr LDR伪指令格式 指令执行的条件码 加载的目标寄存器 基于PC的地址表达式或外部表达式 注意: 1.从指令位置到文字池的偏移量必须小于4KB; 2.与ARM指令的LDR相比,伪指令的LDR的参数有“=”号。 ARM伪指令——大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则汇编器将常量放入文字池,并使用一条程序相对偏移的LDR指令从文字池读出常量。 应用示例(加载常量): LDR R2, =0xFF0 ;MOV R2, #0xFF0 LDR R0, =0xFF000000 ;MOV R0, #0xFF000000 LDR R1, =0xFFFFFFFE ;MVN R1, #0x1 ARM伪指令——大范围的地址读取 LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在汇编
您可能关注的文档
最近下载
- 2025年辽宁省初中学业水平考试英语模拟试卷试题(含答案).pdf VIP
- 螺纹联接与螺旋传动介绍.ppt VIP
- 《大学美育》教案 第13课 光影流转的传奇 影视之美(二).docx VIP
- 小学生3500个常用汉字归类(带拼音).pdf VIP
- 《大学美育》教案 第12课 光影流转的传奇 影视之美(一).docx VIP
- 《大学美育》教案 第11课 五彩缤纷的世界:绘画之美(二).docx VIP
- Dahua大华以太网交换机(桌面式管理型)_WEB使用说明书_V1.0.0.pdf
- 党校中级考试资料.docx VIP
- (2025秋新版)人教版三年级数学上册全册教案.docx
- 智能体@AEI:Agentic Al,开启企业融合智简运维新范式.pdf
文档评论(0)