ARM汇编笔记--伪指令
AREA指令:
用于定义一个代码段或数据段;
语法格式:
AREA 段名, 属性1, 属性2, ...
常用属性:
CODE属性:用于定义代码段,默认为READONLY;
DATA属性:用于定义数据段,默认为READWRITE;
READONLY属性:指定本段为只读;
READWRITE属性:指定本段为读写;
ALIGN属性:指定字节对齐,其值表示的意思是2的次幂;
使用示例:
AREA Init, CODE,READONLY,ALIGN=3
定义了一个名称为Init的只读代码段,8字节对齐;
CODE16/CODE32指令:
通知编译器其后的指令为Thumb/ARM指令;
ENTRY指令:
指定汇编程序的入口点,在一个完整的汇编程序中,至少要有一个ENTRY;
如果有多个ENTRY时,程序入口由链接器指定;
但一个源文件中最多只能有一个ENTRY(也可以没有);
EQU指令:
用于为程序中的常量,标号等定义一个等效的字符串名称;
其中EQU可以用 “*”代替;
使用示例:
TEST EQU 50 ; 定义标号TEST的值为50
ADDR EQU 0x55, CODE32 ; 定义标号ADDR的值为0x55,并且该处为32位的ARM指令
IF指令:
根据条件是否成立与否决定是否执行某个指令序列。
ARM的汇编语句中有一些语句是放在了方括号[ ]中的,
[与IF同义,|与ELSE同义, ]与ENDIF同义
形式一:
[ 条件语句
指令序列
]
相当于
IF 条件语句
指令序列1
ENDIF
其意义是:如果第一句条件语句为真,则下面的执行语句有效,否则跳出方括号。
形式二:
[ 条件语句
指令序列1
|
指令序列2
]
相当于
IF 条件语句
指令序列1
ELSE
指令序列2
ENDIF
WHILE指令:
根据条件是否成立与否决定是否循环执行某个指令序列。
WHILE 条件语句
指令序列
WEND