- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 2
附录2 常用Arm汇编伪指令
在Arm汇编语言程序中,有一些特殊指令用于对汇编过程进行控制,这些指令不是可执行指令也没有对应的机器码,只用于汇编过程中为汇编程序提供汇编信息,这些指令称为伪指令,它们所完成的操作称为伪操作。常用的伪指令有以下几种: 符号定义伪指令、 数据定义伪指令、 汇编控制伪指令、信息报告伪 指令以及杂项伪指令。下面列出了上述几种常用的Arm汇编伪指令。
1. 符号定义伪指令
符号定义伪指令用于定义汇编程序中的变量、对变量赋值以及定义寄存器别名等操作。
表2.1 符号定义伪指令
伪指令
指令格式
指令功能
GBLA
GBLA Variable
声明一个全局的算术变量,并将其初始化成0
GBLLA
GBLLA Variable
声明一个全局的逻辑变量,并将其初始化成FALSE(假)
GBLS
GBLS Variable
声明一个全局的字符串变量,并将其初始化成空串
LCLA
LCLA Variable
声明一个局部的算术变量,并将其初始化成0
LCLL
LCLL Variable
声明一个局部的逻辑变量,并将其初始化成FALSE(假)
LCLS
LCLS Variable
声明一个局部的字符串变量,并将其初始化成空串
SETA
SETA Variable expr
给一个全局或局部算术变量赋值
SETL
SETL Variable expr
给一个全局或局部逻辑变量赋值
SETS
SETS Variable expr
给一个全局或局部字符串变量赋值
RLIST
name RLIST {list of registers}
为一个通用寄存器列表定义名称
CN
name CN expr
为一个协处理器的寄存器定义名称
CP
name CP expr
为一个协处理器定义名称
DN/SN
name DN/SN expr
为一个双精度/单精度的VFP寄存器定义名称
FN
name FN expr
为一个FPA浮点寄存器定义名称
2. 数据定义伪指令
数据定义伪指令一般用于为特定的数据分配存储单元,并可对分配的存储单元进行初始化。
表2.2 数据定义伪指令
伪指令
指令格式
指令功能
DCB
{lable} DCB expr {,expr}
分配一段字节内存单元,并用expr初始化
DCW/DCWU
{lable} DCW{U} expr {,expr}
用于分配一片连续的半字存储单元,并用指定的表达式初始化。?用DCW分配的字存储单元是半字对齐的,而用 DCWU分配的字存储单元并不严格半字对齐
DCD/DCDU
{lable} DCD{U} expr {,expr}
用于分配一片连续的字存储单元,并用指定的表达式初始化。用DCD分配的字存储单元是字对齐的,而用 DCDU分配的字存储单元并不严格字对齐
DCFD/DCFDU
{lable} DCFD{U} expr {,expr}
为双精度的浮点数分配一片连续的字存储单元,并用指定的表达式初始化。每个双精度的浮点数占据两个字单元,用 DCFD分配的字存储单元是字对齐的,而用DCFDU分配的字存储单元并不严格字对齐
DCFS/DCFSU
{lable} DCFS{U} expr {,expr}
为单精度的浮点数分配一片连续的字存储单元,并用指定的表达式初始化。每个单精度的浮点数占据一个字单元,用 DCFS分配的字存储单元是字对齐的,而用DCFSU分配的字存储单元并不严格字对齐
DCQ/DCQU
{lable} DCQ{U} expr {,expr}
用于分配一片以8个字节为单位的连续存储区域,并用指定的表达式初始化。用DCQ分配的存储单元是字对齐的,而用DCQU分配的存储单元并不严格字对齐。???
DCDO
{lable} DCDO expr {,expr}
分配一段字对齐的字内存空间,并用指定的表达式初始化
DCI
{lable} DCI expr {,expr}
在Arm代码中分配一段字对齐的内存单元,并用指定的表达式初始化;在Thumb代码中分配一段半字对齐的内存单元,并用指定的表达式初始化
SPACE
{lable} SPACE expr
用于分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数
MAP
MAP expr {, base-register}
定义一个结构化的内存表的首地址,MAP伪指令通常与 FIELD伪指令配合使用来定义结构化的内存表
FIELD
{lable} FIELD expr
定义一个结构化的内存表中的数据域,表达式的值为当前数据域在内存表中所占的字节数
LTORG
LTORG
说明一个数据缓冲池(文字池)的开始
3. 汇编控制伪指令
汇编控制伪指令用于控制汇编程序的执行流程。
表2.3 汇编控制伪
文档评论(0)