- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统;第4章 GNU汇编伪指令集;4.1 GNU汇编器的平台无关伪指令 ;/binutils/docs-2.12//Pseudo-Ops.html#Pseudo%20Ops;4.1.1 伪指令概念;伪指令格式;伪指令种类;4.1.2 符号定义伪指令;1.全局标号定义
作用:定义一个全局符号,通常是为连接器ld使用
格式:
.global symbol
.globl symbol
;2.局部标号定义
作用:定义对外部不可见的局部符号,作用域仅在当前文件中
格式:
.local symbol
;3.变量赋值
作用:给一个全局变量或局部变量赋值
格式:
.set symbol, expr
;4.宏替换
作用:给一个全局变量或局部变量赋值
格式:
Symbol .equ expr
;4.1.3 数据定义伪指令;1.字节分配
作用:在存储器中分配一个字节,用指定的数据对其初始化
格式:
label: .byte expr
;2.双字节分配
作用:在存储器中分配2个字节,并初始化
格式:
label: .short expr
;3.四字节分配
作用:在存储器中分配4个字节,并初始化
格式:
label: .word expr
label: .long expr
;4.八字节分配
作用:在存储器中分配8个字节,并初始化
格式:
label: .quad expr
;5.单精度浮点变量
作用:在存储器中分配4个字节,用指定的单精度浮点数初始化
格式:
label: .float expr
;6.连续存储区域
作用:分配一片连续的存储器区域并初始化
格式:
label: .space size, expr
label: .skip size, expr
;7.字符串定义
作用:定义一个字符串
格式:
label: .string str
label: .ascii str
label: .asciz str
;8.重复
作用:重复执行后面的命令
格式:
.rept count
commands
.endr
;4.1.4 汇编控制伪操作;1.选择
作用:根据条件判断,决定是否执行某个指令序列
格式:
.if logical-expression
commands
[ .else
commands]
.endif
.if logical-expression
commands
.elseif logical-expression
commands
[.elseif logical-expression
commands]
.endif
;2.宏
作用:定义宏代码段,.macro: 定义一段宏代码, .macro表示代码的开始, .endm表示代码的结束, .exitm跳出宏
格式:
.macro macroname macArgs
commands
.endm;举例;4.1.5 杂项伪操作;1.align
格式:
.align abs-expr
作用:通过填充字节的方式,使当前位置满足一定的对齐方式
;2.section
格式:
.section sectioname
作用:??义一个段
;3.data
格式:
.data subsectionname
作用:定义数据段
;4.text
格式:
.text subsectioname
作用:定义指令段
;5.include
格式:
.include “filename”
作用:包含头文件
;6.arm
格式:
.arm
作用:定义一下代码使用arm指令集编译,功能等价于.code32
;7.thumb
格式:
.thumb
作用:定义一下代码使用thumb指令集编译,功能等价于.code16
;8.extern
格式:
.extern symbol
作用:声明一个外部符号
;9.weak
格式:
.weak symbol
作用:声明一个弱符号
;10.end
格式:
.end
作用:汇编结束;4.2 GNU汇编器支持的ARM伪指令;4.2.1 ADR伪指令;使用说明:
ADR伪指令被汇编器编译成一条指令。汇编器通常使用ADD指令或SUB指令来实现伪操作的地址装载功能。如果不能用一条指令来实现ADR伪指令的功能,汇编器将报告错误。
示例:
;4.2.2 ADRL伪指令;使用说明:
ADRL伪指令与ADR伪指令相似,用于将基于PC相对偏移的地址或基于寄存器相对偏移的地址值读取到寄存器中。所不同的是,ADRL伪指令比ADR伪指令可以读取更大范围的地址。这是因为在编译阶段,ADRL伪指令被编译器换成两条指令。即使一条指令可以完成该操作,编译器也将产生两条指令
文档评论(0)