一、指令的后缀
"S" 可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码。若这条指令执行完以后,对ARM程序状态寄存器的条件码标志(N,Z,C,V)的影响。
"! " 表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。
二、#号后面加0x或&表示十六进制:#0xFF, #&FF
#号后面加0b表示二进制。
#号后面加0d表示十进制。
三、R13(SP)、R14(LR)寄存器
寄存器R13常用做栈指针SP,除用户和系统模式外,其他模式在使用时的名字构成为R13_<mode>。
寄存器R14又被称为连接寄存器(LR),除用户和系统模式外,其他模式在使用时的名字构成为R14_<mode>。
A、每个处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。
B、当异常中断发生时,该异常模式下的R14被设置成保存该模式基于PC的返回地址,对于有些异常模式,R14的值有可能与将返回的地址有个常数 的偏移量,不同模式偏移量还有所不同。
四、IMPORT、EXPORT指令
1、IMPORT
IMPORT伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符 号,而且不论本源文件是否实际引用该符号,该符号都将被加入到本源文件的符号表中。
语法格式:
IMPORT symbol{[WEAK]}
其中,symbol为声明的符号的名称。它是区分大小写的。
[WEAK]指定这个选项后,如果symbol在所有的源文件中都没有被定义,编译器也不会产生任何错误信息,同时编译器也不 会到当前没有被INCLUDE进来的库中去查找该符号。
2、EXPORT
EXPORT
指令声明一个符号,可由链接器用于解析不同的对象和库文件中的符号引用。 GLOBAL
是 EXPORT
的同义词
EXPORT
{[WEAK]}
<code class="code"><span style="white-space:pre"> </span> EXPORT</code> <span class="replaceable" style="font-style: italic;">symbol</span> {[<span class="replaceable" style="font-style: italic;">attr</span>}]}
<code class="code"><span style="white-space:pre"> </span> EXPORT</code> <span class="replaceable" style="font-style: italic;">symbol</span> [WEAK{,<span class="replaceable" style="font-style: italic;">attr</span>}]
其中:
symbol
是要导出的符号名称。 符号名区分大小写。 如果省略了 symbol
,则导出所有符号。
WEAK
仅当没有其他源导出另一个 symbol
时,才应将此 symbol
导入其他源中。 如果使用了不带 symbol
的 [WEAK]
,则所有导出的符 号都是 处于次要地位的。