文档详情

第5章 ARM 汇编程序(全).pdf

发布:2017-05-23约2.7万字共56页下载文档
文本预览下载声明
第第5章章ARM汇编程序设计编程序设计 由于高级编程语言隐藏了CPU执行指令 的许多细节,因此在只关心系统所具有 功能的系统中功能的系统中,,采用高级语言编写程序采用高级语言编写程序 更为合适。但是,CPU执行指令的细节 差异会反应在系统的非功能特性上差异会反应在系统的非功能特性上,例例 如系统程序的规模和运行速度。因此, 掌握汇编语言程序设计对于嵌入式系统掌握汇编语言程序设计对于嵌入式系统 的设计者来说是非常必要的。 ARM汇编程序设计 预预定义变量1 ARM汇编器对ARM 的寄存器进行了预定义,所有 的寄存器和协处的寄存器和协处理器名都是大小写敏感的器名都是大小写敏感的。预定预定 义的寄存器如下: ·R0~R15和r0~r15; ·a1~a4 (参数、结果或临时寄存器,与r0~r3 同 义); ·v1~v8 (变量寄存器,与r4~r11同义); ·sbsb和和SBSB ((静态基址寄存器静态基址寄存器,,与与rr99同义同义));; ·sl和SL (堆栈限制寄存器,与r10同义); ··fpfp和和FPFP ((帧指针帧指针,与与rr1111同义同义));; ARM汇编程序设计 预定义变量预定义变量22 ·ip和IP (过程调用中间临时寄存器,与r12同义); ·spp和SP (堆栈栈指针,与r13同义); ·lr和LR (链接寄存器,与r14同义); ·pc和PC (程序计数器,与r15同义); ·cpsr和CPSR (程序状态寄存器); ·spsr和SPSR (程序状态寄存器); ·f0~f7和F0~F7 (FPA寄存器); ·s0~s31和S0~S31 (VFP单精度寄存器); ·dd00~dd1515和和DD00~DD1515 ((VFPVFP双精度寄存器双精度寄存器)); ·p0~p15 (协处理器0~15); ·c0c0~c15c15 ((协处理器寄存器协处理器寄存器00~1515))。 ARM汇编程序设计 内置变量1 ARM汇编器所定义的内置变量如表4-1所示。 值得注意的是内置变量的设置不能用值得注意的是内置变量的设置不能用SETA 、、 SETL或SETS等指示符来设置,只能用于表 达式或条件语句达式或条件语句。例如例如: IF {ARCHITECTURE} = “4T” ARM汇编程序设计 表4-1 内置变量 变量 含义 {PC}{PC}或或. 当前指令的地址当前指令的地址 {VAR}或@ 存储区位置计数器的当前值 {TRUE} 逻辑常量真 {FALSE}{FALSE} 逻辑常量假逻辑常量假 {OPT} 当前设置列表选项值,OPT用来保存当前列表选项,改变 选项值,恢复它的原始值 {CONFIG} 如果汇编器汇编ARM代码,则值为32 ;如果汇编器汇编 Thumb代码,则值为16 {ENDIAN}{ENDIAN} 如果汇编器在大端模式下如果汇编器在大端模式下,则值为则值为bibig ;如果汇编器在小如果汇编器在小 端模式下,则值为little ARM汇编程序设计 表4-1 内置变量(续) {CODESIZE} 如果汇编器汇编ARM 代码,则值为32 ;如果汇编器汇编 Thumb代码,则值为16,与{CONFIG}同义 {CPU} 选定的选定的CPU名名,缺省时为缺省时为ARM7TDMI {{FPU
显示全部
相似文档