下载此文档

第4章ARM汇编语言程序设计.ppt


文档分类:IT计算机 | 页数:约101页 举报非法文档有奖
1/101
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/101 下载此文档
文档列表 文档介绍
,它不在处理器运行期间由机器执行,只是在汇编时被翻译成ARM或者Thumb(或Thumb-2)指令(或指令序列),从而实现真正的指令操作。ARM伪指令包含ADR、ADRL、LDR等。31)小范围地址读取伪指令ADR格式ADR{cond}{.W}register,label功能将基于PC相对偏移地址或基于寄存器相对偏移地址值读取到寄存器中字节地址对齐时,取值范围为−255~255字地址对齐时,取值范围为−1020~102016字节地址对齐时其取值范围更大ADR伪指令被汇编器编译成一条指令。汇编器通常使用ADD指令或SUB指令来实现伪操作的地址装载功能。如果不能用一条指令来实现ADR伪指令的功能,汇编器将报告错误。42)中等范围地址读取伪指令ADRL格式ADRL{cond}register,label功能将基于PC相对偏移的地址或基于寄存器相对偏移的地址值读取到寄存器中字节地址对齐时,取值范围为−64~64KB;字地址对齐时,取值范围为−256~256KB。16字节地址对齐时,其取值范围更大。ADRL伪指令被编译器换成两条指令。即使一条指令可以完成该操作,编译器也将产生两条指令,其中一条为多余指令。如果汇编器不能在两条指令内完成操作,将报告错误,中止编译。5格式LDR{cond}{.W}register,=[expr|label-expr]功能将一个32位的常数或者一个地址值读取到寄存器中,可以看作是加载寄存器的内容。如果加载的常数符合MOV或MVN指令立即数的要求,则用MOV或MVN指令替代LDR伪指令。如果加载的常数不符合MOV或MVN指令立即数的要求,汇编器将常量放入数据缓存池,并使用一条程序相对偏移的LDR指令从数据缓存池读出常量。3)大范围地址读取伪指令LDR6示例将常数0xff0读到R3中。LDRR3,=0xff0;汇编后将得到:MOVR3,#0xff0将常数0xfff读到R1中。LDRR1,=0xfff;汇编后将得到:LDRR1,[pc,offset_to_litpool]…litpoolDCD0xfff7将place标号地址读入R1中。LDRR2,=place;汇编后将得到:LDRR2,[pc,offset_to_litpool]…(Directive)是ARM汇编语言程序里的一些特殊的指令助记符,其作用主要是为完成汇编程序做各种准备工作,对源程序运行汇编程序处理,而不是在计算机运行期间由处理器执行。伪操作只是汇编过程中起作用,一旦汇编结束,伪操作也就随之消失。ARM公司推出的开发工具所支持的汇编伪操作符号定义伪操作数据定义伪操作汇编控制伪操作杂项伪操作91)符号定义伪操作(1)全局变量定义GBLA、GBLL及GBLS(2)局部变量定义LCLA、LCLL及LCLS格式:GCLA/GCLL/GCLS variable格式:LCLA/GCLL/GCLS variable说明variable-全局/局部变量名称A-算术变量(初始化为0)L-逻辑变量(初始化为假F)S-字符串变量(初始化为空)10

第4章ARM汇编语言程序设计 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数101
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1557281760
  • 文件大小597 KB
  • 时间2019-11-22