ARM汇编语言的语法知识PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用示例(源程序):
...
LDR R1,=InitStack
来自百度文库...
InitStack
MOV R0, LR
...
使用伪指令将程序标号 InitStack的地址存入R1
• ARM伪指令——大范围的地址读取
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在 汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的 常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则 汇编器将常量放入文字池,并使用一条基于PC相对偏移的LDR指令从文字池 读出常量。
ARM汇编语言的语法知识
ARM汇编语言语句格式
ARM汇编语言的语句格式:
{symbol}{instruction|directive|pseudo-instruction}{comment}
其中:
instruction为指令。在ARM汇编语言中,指令不能从一行的行头开 始.在一行语句中,指令的前面必须有空格或符号. directive为伪操作。 pseudo-instruction为伪指令。 symbol为符号。 在ARM汇编语言中,符号必须从一行的行头开始, 并且符号中不能包含空格,在指令和伪指令中符号用作地址标号, 在有些伪操作中,符号用作变量或者常量. comment为语句的注释.在 ARM 汇编语言中注释以分号”;”开头. 注释的结尾即为一行的结尾,注释也可以单独占用一行.
ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地 址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替 换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR 伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。
ADR伪指令格式 ADR{cond} register,expr
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
伪操作和宏指令一般与编译程序有关,在不同的编译 环境下有不同的编写形式和语法规则.常见的ARM编译开 发环境有2种:
ARM公司开发的ADS/SDT IDE开发环境
集成了GNU开发工具的IDE开发环境
应用示例(源程序):
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在 汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的 常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则 汇编器将常量放入文字池(即数据缓冲区),并使用一条基于PC相对偏移的 LDR指令从文字池读出该常量。
ARM汇编语言伪指令
ARM伪指令
ARM伪指令不属于ARM指令集中的指令,是 为了编程方便而定义的。伪指令可以像其它ARM指 令一样使用,但在编译时这些指令将被等效的ARM 指令代替。ARM伪指令有四条,分别为ADR伪指令、 ADRL伪指令、LDR伪指令、NOP伪指令。
• ARM伪指令——小范围的地址读取
ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的 地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编 编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不 能用两条指令实现,则产生错误,编译失败。
ADRL伪指令格式 ADRL{cond} register,expr
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
宏指令是一段独立的程序代码,可插在源程序中,它 通过伪操作来定义.宏在被使用前必须提前定义好,宏之 间可互相调用,也可自己递归调用.通过直接书写宏名来 使用宏,并根据宏指令的格式设置相应的输入参数.这与 C语言中子函数形参与实参的传递很相似.
LDR伪指令格式 LDR{cond} register,=expr
指令执行的条件码
加载的目标寄存器 基于PC 的地址表达式 或外部表达式
• ARM伪指令——大范围的地址读取
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在 汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的 常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则 汇编器将常量放入文字池,并使用一条基于PC相对偏移的LDR指令从文字池 读出常量。
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
伪指令也是ARM汇编语言程序里的一些特殊指令助记 符,它们不是真正的ARM指令或Thumb指令,也不在计算机 运行期间由机器执行,而是在源程序进行汇编时被替换 成相应的ARM指令或Thumb指令序列,从而实现真正的指 令操作.
指令执行的条件码 加载的目标寄存器 地址表达式
地址表达式expr的取值范围: 当地址值不是字对齐时,其取值范围为-255~255字节; 当地址值是字对齐时,其取值范围为-1020~1020字节; 当地址值是16字节对齐时,其取值范围将更大;
该地址必须与ADR伪指令在同一个代码段中。
• ARM伪指令——中等范围的地址读取
指令执行的条件码 加载的目标寄存器 地址表达式
地址表达式expr的取值范围: 当地址值不是字对齐时,其取值范围为-64K~64K; 当地址值是字对齐时,其取值范围为-256K~256K; 当地址值是16字节对齐时,其取值范围将更大; 该地址必须与ADRL伪指令在同一个代码段中 。
• ARM伪指令——大范围的地址读取
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
伪操作是ARM汇编语言程序里的一些特殊指令助记符, 其作用主要是为完成汇编程序做各种准备工作,在源程 序进行汇编时由汇编程序处理,而不是在计算机运行期 间由机器执行.也就是说,这些伪操作只在汇编过程中起 作用,一旦汇编结束,伪操作的使命也就随之结束.
...
LDR R1,=InitStack
来自百度文库...
InitStack
MOV R0, LR
...
使用伪指令将程序标号 InitStack的地址存入R1
• ARM伪指令——大范围的地址读取
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在 汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的 常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则 汇编器将常量放入文字池,并使用一条基于PC相对偏移的LDR指令从文字池 读出常量。
ARM汇编语言的语法知识
ARM汇编语言语句格式
ARM汇编语言的语句格式:
{symbol}{instruction|directive|pseudo-instruction}{comment}
其中:
instruction为指令。在ARM汇编语言中,指令不能从一行的行头开 始.在一行语句中,指令的前面必须有空格或符号. directive为伪操作。 pseudo-instruction为伪指令。 symbol为符号。 在ARM汇编语言中,符号必须从一行的行头开始, 并且符号中不能包含空格,在指令和伪指令中符号用作地址标号, 在有些伪操作中,符号用作变量或者常量. comment为语句的注释.在 ARM 汇编语言中注释以分号”;”开头. 注释的结尾即为一行的结尾,注释也可以单独占用一行.
ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地 址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替 换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR 伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。
ADR伪指令格式 ADR{cond} register,expr
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
伪操作和宏指令一般与编译程序有关,在不同的编译 环境下有不同的编写形式和语法规则.常见的ARM编译开 发环境有2种:
ARM公司开发的ADS/SDT IDE开发环境
集成了GNU开发工具的IDE开发环境
应用示例(源程序):
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在 汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的 常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则 汇编器将常量放入文字池(即数据缓冲区),并使用一条基于PC相对偏移的 LDR指令从文字池读出该常量。
ARM汇编语言伪指令
ARM伪指令
ARM伪指令不属于ARM指令集中的指令,是 为了编程方便而定义的。伪指令可以像其它ARM指 令一样使用,但在编译时这些指令将被等效的ARM 指令代替。ARM伪指令有四条,分别为ADR伪指令、 ADRL伪指令、LDR伪指令、NOP伪指令。
• ARM伪指令——小范围的地址读取
ADRL伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的 地址值读取到寄存器中,比ADR伪指令可以读取更大范围的地址 。在汇编 编译器编译源程序时,ADRL伪指令被编译器替换成两条合适的指令。若不 能用两条指令实现,则产生错误,编译失败。
ADRL伪指令格式 ADRL{cond} register,expr
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
宏指令是一段独立的程序代码,可插在源程序中,它 通过伪操作来定义.宏在被使用前必须提前定义好,宏之 间可互相调用,也可自己递归调用.通过直接书写宏名来 使用宏,并根据宏指令的格式设置相应的输入参数.这与 C语言中子函数形参与实参的传递很相似.
LDR伪指令格式 LDR{cond} register,=expr
指令执行的条件码
加载的目标寄存器 基于PC 的地址表达式 或外部表达式
• ARM伪指令——大范围的地址读取
LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。在 汇编编译源程序时,LDR伪指令被编译器替换成一条合适的指令。若加载的 常数未超出MOV或MVN的范围,则使用MOV或MVN指令代替该LDR伪指令,否则 汇编器将常量放入文字池,并使用一条基于PC相对偏移的LDR指令从文字池 读出常量。
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
伪指令也是ARM汇编语言程序里的一些特殊指令助记 符,它们不是真正的ARM指令或Thumb指令,也不在计算机 运行期间由机器执行,而是在源程序进行汇编时被替换 成相应的ARM指令或Thumb指令序列,从而实现真正的指 令操作.
指令执行的条件码 加载的目标寄存器 地址表达式
地址表达式expr的取值范围: 当地址值不是字对齐时,其取值范围为-255~255字节; 当地址值是字对齐时,其取值范围为-1020~1020字节; 当地址值是16字节对齐时,其取值范围将更大;
该地址必须与ADR伪指令在同一个代码段中。
• ARM伪指令——中等范围的地址读取
指令执行的条件码 加载的目标寄存器 地址表达式
地址表达式expr的取值范围: 当地址值不是字对齐时,其取值范围为-64K~64K; 当地址值是字对齐时,其取值范围为-256K~256K; 当地址值是16字节对齐时,其取值范围将更大; 该地址必须与ADRL伪指令在同一个代码段中 。
• ARM伪指令——大范围的地址读取
5.1.ARM汇编语言的伪操作 、宏指令和伪指令
ARM汇编语言源程序中语句一般由指令、伪操作、 宏指令和伪指令组成.
伪操作是ARM汇编语言程序里的一些特殊指令助记符, 其作用主要是为完成汇编程序做各种准备工作,在源程 序进行汇编时由汇编程序处理,而不是在计算机运行期 间由机器执行.也就是说,这些伪操作只在汇编过程中起 作用,一旦汇编结束,伪操作的使命也就随之结束.