一般而言,Microsoft ARM 組合器會使用ARM元件語言,該語言記載於 ARM編譯程式armasm參考指南中。 不過,某些元件指示詞Microsoft實作與ARM元件指示詞不同。 本文說明差異。
ARM 元件指示詞Microsoft實作
AREAMicrosoft ARM 組合器支援下列屬性:、、、
CODEREADONLYCODEALIGNNOINITDATA、、ARMTHUMBALIGNAREAREADWRITE除了 和
ARM以外的所有專案THUMB,如ARM編譯程式armasm參考指南中所述。在 Microsoft ARM 組合器中,
THUMB指出CODE區段包含 Thumb 程式代碼,而且是CODE區段的預設值。ARM表示區段包含 ARM 程式代碼。ATTR不支援。
CODE16不支援,因為它表示預先UAL Thumb語法,Microsoft ARM 組合器不允許。
THUMB請改用 指示詞以及 UAL 語法。COMMON不支援通用區域的對齊規格。
DCDO不支援。
DN、 、QNSN不支援註冊別名上的類型或車道規格。
ENTRY不支援。
EQU不支援定義符號的類型規格。
EXPORT和GLOBAL使用下列語法指定匯出:
EXPORT|GLOBALsymbol{[type]}symbol是要導出的符號。[type]如果指定,則可以[DATA]表示符號指向數據,或[FUNC]表示符號指向程序代碼。GLOBAL與EXPORT同義。EXPORTAS不支援。
FRAME不支援。
FUNCTION和PROC元件語法可讓您在程式上指定自定義呼叫慣例:您可以列出呼叫端-save 的緩存器,以及被呼叫者儲存的緩存器。 不過,雖然Microsoft ARM 組合器接受語法,但它會忽略緩存器清單。 組合器所產生的偵錯資訊僅支援預設呼叫慣例。
IMPORT和EXTERN使用下列語法指定匯入:
IMPORT|EXTERNsymbol{ {, TYPE, WEAKaliast}}symbol是要匯入之符號的名稱。如果
WEAKalias指定 ,則表示是symbol弱式外部。 如果在連結時找不到其定義,則所有對它的參考都會繫結至alias。如果
TYPEt指定 ,則t表示連結器應該如何嘗試解析symbol。 的這些值t是可能的:值 名稱 1 請勿搜尋的連結 symbol庫。2 搜尋的連結 symbol庫。3 symbol是的alias別名(預設值)。EXTERN是 的IMPORT同義字,但symbol只有在目前元件中有參考時才會匯入。MACRO不支援使用變數來保存巨集的條件代碼。 不支援巨集參數的預設值。
NOFP不支援。
OPT、 、TTLSUBT不支援,因為Microsoft ARM 組合器不會產生清單。
PRESERVE8不支援。
RELOCRELOC n只能遵循指示或數據定義指示詞。 沒有可以重新放置的「匿名符號」。REQUIRE不支援。
REQUIRE8不支援。
THUMBX不支援,因為Microsoft ARM 組合器不支援 Thumb-2EE 指令集。