本文主要是介绍GNU的伪操作 (25),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这里主要是 对 GNU的 各个伪操作进行 详细的解释。
先来看着几个 伪操作。
.byte, .short, .long, .quad , .float , 这个是关于 字节的。
.string .ascii 是关于字符串的。 这个字符串编译器是可以自动在末尾补0 的。
举例:
val:
.word 0x11223344
mov r1, #val
代表将 val 标号处的 四个字节的值 放到 r1 里面。
疑问: 如果这里是8个字节, 那么该怎么使用呢? 一个寄存器只能是 4个字节。
对于 .rept 的举例。
接下来是对这些的解释。
.global 代表这个 变量在其他的文件也可以使用。
.extern 代表使用其他文件的变量。
.arm .thumb, 与 .code 16 , .code32 是同一个意思。
macro 操作
举例:
.macro MOV_PC_LR
.endm
.setction
MOV_PC_LR
这就是在调用。
然后是带参数的举例:
.macro MOV_PC_LR , param
mov r1, \param
mov pc,lr
.endm
MOV_PC_LR ,
这就是在调用。
注意: 参数前面有一个 \
.text , .data, .bss . 代表具体的段的名称。
.align 有两种对齐的方式。
.org , 这个指令 ,主要是在设置 程序的链接地址。
举例:
.set 与 .equ 都是给变量赋值的意思。
这个就不用解释了。
这篇关于GNU的伪操作 (25)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!