ARM伪指令

[size=x-large]符号定义伪指令[/size]
定义变量, 对变量赋值及定义寄存器的别名
[color=red]定义全局变量GBLA, GBLL, GBLS[/color]
GBLA(LS) 全局变量名
GBLA 定义全局数字变量,初始化为0
GBLL 定义全局逻辑变量,初始化为F
GBLS 定义全局字符串变量,初始化为空

GBLA Test
Test SETA 0xaa
GBLL Test2
Test2 SETL {TRUE}
GBLS Test3
Test3 SETS "testing"

[color=red]定义局部变量LCLA, LCLL, LCLS[/color]
[color=red]对变量赋值 SETA, SETL, SETS[/color]
[color=red]为通用寄存器列表定义名称RLIST[/color]
名称 RLIS {寄存器列表}
在LDM和STM中使用,访问次序为寄存器的编号由低到高, 与列表中定义的顺序无关
RegList RLIST {R0-R5, R8, R10}

[size=x-large]数据定义伪指令[/size]
为特定的数据分配存储单元, 并完成分配存储单元的初始化
DCB DCW DCD DCFD
DCFS DCQ SPACE MAP FIELD

[color=red]标号 DCB 表达式[/color]
分配一片连续的字节存储单元并用表达式初始化
表达式为0-255的数字或字符串, DCB可用"="代替
示例:
Str DCB "This is a test!"

标号 SPACE 表达式
分配一片连续的,表达式大小的存储空间并初始化为0
SPACE可用%代替
示例:
DataSpace SPACE 100;分配100字节连续的存储单元并初始化为0

[color=red]MAP 表达式{, 基址寄存器}[/color]
定义一个结构化的内存表的首地址.
MAP也可用^替代

MAP 0x100
定义结构化的内存表首地址的值为0x100
MAP 0x100, R0
定义结构化的内存表首地址的值为0x100+R0

[color=red]标号 FIELD 表达式[/color]
FIELD指令用于定义一个结构化内存表中的数据域, 并为每个数据域指定一个标号供其他的指令引用
FIELD也可用#替代
示例:
MAP 0x100;定义结构化的内存表首地址的值为0x100
A FIELD 16 ;定义A的长度为16字节, 位置为0x100
B FIELD 32 ;定义B的长度为32字节, 位置为0x110
S FIELD 256;定义S的长度为256字节,位置为0x130


[size=x-large]汇编控制伪指令[/size]
[color=red]IF ELSE ENDIF[/color]
示例:
GBLL ETst;
IF Test=TRUE
指令序列1
ELSE
指令序列2
ENDIF

[color=red]WHILE WEND[/color]
示例:
GBLA Counter
Counter SETA 3
WHILE Counter<10
指令序列
WEND

[color=red]MACRO MEND[/color]
[color=red]MEXIT[/color]

[size=x-large]宏指令[/size]
[color=red]AERA 段名 属性1,属性2....[/color]
用于定义一个代码段或者数据段
属性:
CODE 定义代码段, 默认为READONLY
DATA 定义数据段, 默认为READWRITE
READONLY 指定本段为只读
READWRITE 指定本段可读写
ALIGN属性, 使用方式ALIGN 表达式 2的表达式次方对齐
示例:
AREA Init, CODE, READONLY;定义了一个段名为Init的只读代码段


[color=red]CODE16或CODE32[/color]
之后为Thumb或ARM指令

[color=red]ENTRY[/color]
ENTRY标称程序的入口点
源文件中至多一个 ENTRY

[color=red]EQU指令[/color]
EQU 表达式{,类型}
定义常量, 类似于C语言中的#define, EQU可用*代替
Test EQU 50
Addr EQU 0x55, CODE32;定义Addr值为0x55, 且是32位ARM指令

EXPORT指令
[color=red]EXPORT 标号[/color]
声明一个全局的标号, 可在其他文件中使用, 可用GLOBAL代替
示例
AREA Init, CODE, READONLY
EXPORT Stest;

[color=red]IMPROT 标号[/color]
通知编译器, 要使用的标号在其他的源文件中定义

[color=red]END指令[/color]
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuyu711

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值