GNU下ARM伪指令

1. 数据定义(Data Definition)伪操作

数据定义伪操作一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。常见的数据定义伪操作有如下几种:

1).byte 单字节定义.byte 0X12 ,‘a’

2).short 定义双字节数据 .short 0x1234

3) .long /.word 定义4字节数据.word 0x12345678

4) .quad 定义8字节数据.quad 0x1234567812345678

5) .float 定义浮点数 .float0f3.2

6). string / .asciz / .ascii定义字符串 .ascii “abcd\0”

注意: .ascii 伪操作定义的字符串需要每行添加jiewei 字符‘\0’,其他不需要

 

2)汇编控制伪操作

1).if 表达式

……

.else

……

.endif

2) .macro, .endmmacro伪操作可以将一段代码定义为一个整体,称为宏指令,然后就可以在程序中通过宏指令多次调用该段代码。其中,$标号在宏指令被展开时,标号会被替换为用户定义的符号。宏操作可以使用一个或多个参数,当宏操作被展开时,这些参数被相应的值替换。

 

.macro

{$label} macroname {$parameter{,$parameter}…}

……code

.endm

 

3. 伪指令

1)ADR register,label

注:ADR小范围读取伪指令,当地址值为字节对齐时,取值范围为-255~255,当地址值是字对齐时,取值范围为-1024~1024。

2)ADRL register,label

注:ADR中等范围读取伪指令,当地址值为字节对齐时,取值范围为-64~64KB,当地址值是字对齐时,取值范围为-256~256KB

3) LDR register, =地址值

注:LDR伪指令装载一个32位的常数和一个地址到寄存器中。

 

4. 杂项伪操作

.global 用来声明一个全局的符号

.arm   下面使用的是arm指令集

.thumb

.section 定义一个段

    .text  代码段

    .data  数据段

    .bss 全局未初始化区

.align (4)  4字节对齐

.org offset  从当前地址加上offset开始存放代码

.extern  声明一个外部符号,兼容其他汇编

.weak    声明一个符号,如果符号没有定义,就忽略不报错

.end    文件结束

.include “filename” 包含指定文件

.equ  把某个符号定义成一个值,例如 .equ  PI,3.1415

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值