- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 ARM 汇编程序(全)
第第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
文档评论(0)