ARM 汇编程序指令
通常,Microsoft ARM 汇编程序使用 ARM 程序集语言,该语言记录在 ARM 编译器 armasm 参考指南中。 但是,某些程序集指令的 Microsoft 实现不同于 ARM 程序集指令。 本文介绍了差异。
ARM 程序集指令的 Microsoft 实现
AREA
Microsoft ARM 汇编程序支持以下
AREA
属性:ALIGN
、CODE
、CODEALIGN
、DATA
、NOINIT
、READONLY
、READWRITE
、THUMB
、ARM
。除
THUMB
和ARM
以外,所有属性都按照 ARM 编译器 armasm 参考指南中记录的那样工作。在 Microsoft ARM 汇编程序中,
THUMB
指示分区CODE
包含 Thumb 代码,并且是分区CODE
的默认值。ARM
指示分区包含 ARM 代码。ATTR
不支持。
CODE16
不支持,因为它表示 Microsoft ARM 汇编程序不允许的预 UAL Thumb 语法。 请改用
THUMB
指令以及 UAL 语法。COMMON
不支持通用区域的对齐规范。
DCDO
不支持。
DN
、QN
、、SN
不支持注册别名上的类型或通道规范。
ENTRY
不支持。
EQU
不支持定义符号的类型规范。
EXPORT
和GLOBAL
使用此语法指定导出:
EXPORT
|GLOBAL
symbol
{[type]
}symbol
是要导出的符号。 如果指定,[type]
可以是[DATA]
或者[FUNC]
,前者表示符号指向数据,后者表示符号指向代码。GLOBAL
是EXPORT
的同义词。EXPORTAS
不支持。
FRAME
不支持。
FUNCTION
和PROC
程序集语法允许在过程上指定自定义调用约定:列出调用方保存的寄存器,以及被调用方保存的寄存器。 但是,虽然 Microsoft ARM 汇编程序接受语法,但它会忽略寄存器列表。 汇编程序生成的调试信息仅支持默认调用约定。
IMPORT
和EXTERN
使用此语法指定导入:
IMPORT
|EXTERN
symbol
{ {, TYPE
, WEAK
alias
t
}}symbol
是要导入的符号的名称。如果
WEAK
alias
指定,则表示外部symbol
弱。 如果在链接时找不到它的定义,则对其的所有引用将绑定到alias
。如果
TYPE
t
已指定,则t
指示链接器应如何尝试解析symbol
。t
可能具有以下值:值 说明 1 不要搜索 symbol
的库。2 搜索 symbol
的库。3 symbol
是alias
的别名(默认)。EXTERN
是IMPORT
的同义词,仅当当前程序集中引用它时才导入symbol
。MACRO
不支持使用变量来保存宏的条件代码。 不支持宏参数的默认值。
NOFP
不支持。
OPT
、TTL
、、SUBT
不支持,因为 Microsoft ARM 汇编程序不生成列表。
PRESERVE8
不支持。
RELOC
RELOC n
只能遵循指令或数据定义指令。 没有可以重新定位的“匿名符号”。REQUIRE
不支持。
REQUIRE8
不支持。
THUMBX
不支持,因为 Microsoft ARM 汇编程序不支持 Thumb-2EE 指令集。