9.1 ARM程序开发环境
9.1.1 常见ARM程序开发环境简介
ARM程序开发环境主要分为基于Windows平台和基于Linux平台的两大类。其中主要有:
基于Windows平台:ADS1、RVDS2、EWARM3、RealView MDK4 等
基于Linux平台:ARM-Linux-GCC5
9.1.2 RVDS开发环境简介
RVDS是ARM公司继SDT和ADS1.2之后主推的新一代开发工具。集程序编辑、编译和调试于一体,支持软件仿真和硬件调试,支持汇编、C和C++等多种代码的编译。
9.2 汇编语言伪指令
在汇编语言程序里,为完成汇编程序中如定义变量、分配数据存储空间、控制汇编过程、定义程序入口等的各种准备操作的一些特殊助记符称为伪指令,它们没有对应的机器码,且不同汇编器的伪指令可能会有少量区别。
9.2.1 符号定义伪指令
用于定义ARM汇编程序中的变量,对变量赋值和定义寄存器等。
助记符 | 指令功能描述 |
---|---|
GBLA | 定义一个全局的数字变量,并初始化为0 |
GBLL | 定义一个全局的逻辑变量,并初始化为F(假) |
CBLS | 定义一个全局的字符串变量,并初始化为空 |
LCLA | 定义一个局部的数字变量,并初始化为0 |
LCLL | 定义一个局部的逻辑变量,并初始化为F |
LCLS | 定义一个局部的字符串变量,并初始化为0空 |
SETA | 用于给一个数字变量赋值 |
SETL | 用于给一个逻辑变量赋值 |
SETS | 用于给一个字符串变量赋值 |
RN | 用于给一个特殊的寄存器命名 |
CN | 用于给一个协处理器的寄存器命名 |
CP | 用于给一个协处理器命名 |
DN | 用于给一个双精度的VFP寄存器命名 |
SN | 用于给一个单精度的VFP寄存器命名 |
FN | 用于给一个FPA浮点寄存器命名 |
RLIST | 定义一个通用寄存器列表,根据寄存器编号由低到高访问 |
实例:
GBLL L_OFF ;定义全局逻辑变量L_OFF
L_OFF SETL {FALSE} ;给全局逻辑变量赋值为假
9.2.2 数据定义伪指令
一般用于为特定的数据分配存储单元,同时完成对已分配存储单元的初始化工作。常用指令如下:
助记符 | 指令功能描述 |
---|---|
SPACE | 用于分配一片连续的存储单元,并初始化为0 |
DATA | 在代码段中使用数据 |
DCB | 用于分配一片连续的字节存储单元,并用指定的表达式初始化 |
DCW | 用于分配一片连续的半字存储单元,并用指定的表达式初始化 |
DCD | 用于分配一片连续的字存储单元,并用指定的表达式初始化 |
实列:
DataSpace SPACE 100 ;分配连续100字节的存储单元并初始化为0
src DCD 1,2,3,4,5 ;用数字常量初始化标号为src的连续字存储空间
9.2.3 汇编控制伪指令
用于控制汇编程序的执行流程。常见的汇编控制伪指令包括一下几条: