將 ARM ADS (ARM Developer Suite) 組合語言原始碼移植至 GCC (GNU As) 時的關鍵語法差異對照表,涵蓋註解、包含檔案、符號定義、條件組裝、區段宣告、巨集、導出導入等 9 類規則。
| ADS 語法 | GNU As 語法 | 範例/說明 |
|---|---|---|
| 註解 | @ 或 /* ... */ | ; comment → @ comment 或 /* comment */ |
| 包含檔案 | .include "file" | GET option.a / INCLUDE option.a → .include "option.a" |
| 符號等值 | .equ | EQU, SETA, SETL → .equ SYM, VALUETCLK2 EQU PB25 → .equ TCLK2, PB25BUSWIDTH SETA 16 → .equ BUSWIDTH, 16 |
| 導出/導入 | .global / .extern | EXPORT → .global、IMPORT → .externGBLL, GBLA → .global |
| 資料定義 | .long | DCD → .long |
| 條件組裝 | .ifdef/.else/.endif | IF :DEF: → .ifdef、ELSE → .else、ENDIF → .endif:OR: → |、:SHL: → << |
| 程式結束 | .end | END → .end注意:被 .include 的檔案**不可**有 .end,否則主程式會提前結束 |
| 標號定義 | 標號後加冒號 | Entry → Entry:AREA Word, CODE, READONLY → .textAREA Block, DATA, READWRITE → .dataCODE32 → .armCODE16 → .thumb |
| 巨集 | .macro/.endm | MACRO → .macro、MEND → .endm |
ADS GNU As
AREA name, CODE, READONLY → .section .text (或 .text)
AREA name, DATA, READWRITE → .section .data (或 .data)
AREA name, DATA, READONLY → .section .rodata
0x 表十六進制,ADS 可用 & 或 0x。:OR:→|、:AND:→&、:SHL:→<<、:SHR:→>>。.include 檔案中**絕不可**出現 .end。