.ascii:插入一串不以零結尾的字符。
.asciz:插入一串以零結尾的字符。
.balign:在當前位置插入字節以使地址對齊到指定的字節邊界。
.byte:插入一個或多個字節值。
.data:轉到數據段,通常用於定義數據信息。
.define:通常用於定義宏或常量符號,但在不同彙編器中使用可能有所不同。
.double:插入一個或多個雙精度浮點數。
.extern:聲明一個外部符號,表示該符號在其他文件中定義。
.float:插入一個或多個單精度浮點數。
.globl 或 .global:聲明一個全局符號,使該符號可被其他文件引用。
.hword:插入一個或多個半字(2字節)值。
.include:包含另一個文件的內容。
.int:插入一個或多個整數,通常等同於 .word。
.lcomm:定義一個本地公共塊,用於未初始化的數據。
.local:聲明一個本地符號,作用域僅限於當前文件。
.long:插入一個或多個長整型值,通常等同於 .word。
.org:設定位置計數器,用於控制數據或代碼段的位置。
.quad:插入一個或多個四字(8字節)值。
.section:切換到一個特定的段(section),用於控制數據和代碼的組織。
.short:插入一個或多個短整型值,通常等同於 .hword。
.skip:跳過指定的字節數,通常用於分配未初始化的空間。
.space:分配指定字節數的未初始化存儲空間。
.string:插入一個以零結尾的字符串。
.text:轉到代碼段,通常用於定義代碼。
.word:插入一個或多個字(4字節)值。
.macro:定義一個宏,宏是一個可以重複使用的指令集合。
.endm:結束一個宏定義。
.irp:處理一個參數列表,生成相應的代碼,每個參數值替換該列表中的一個元素。
.irpc:處理一個字符列表,分別生成相應的代碼,每個字符替換該列表中的一個元素。
.if:條件編譯指令,根據表達式是否為真來決定是否編譯後續代碼塊。
.else:與.if聯合使用,表示如果.if條件為假時應該編譯的代碼塊。
.else_if:類似於.else,但可以擴展if條件。
.endif:結束一個.if條件塊。
.equ:定義一個符號並給它賦值。
.equiv:定義一個符號並給它賦值,但如果符號已經定義則報錯。
.fill:生成由指定數量的常數組成的塊。
.incbin:包含一個二進制文件的內容。
.incdir:指定搜索包含文件的目錄(等同於C語言的#include搜索路徑)。
.include:包含另一個彙編文件的內容。
.pushsection:保存當前段選擇並切換到指定的段。
.popsection:恢復到之前的段選擇。
.repeat:重複一個代碼塊指定的次數。
.size:定義一個符號的大小。
.type:定義一個符號的類型。
.val:設置表達式結果相同類型的符號。
.macro 和 .endm: 用於定義一個宏和結束宏定義。宏是一個具有參數的代碼片段。
.macro LOAD reg, val
lw \reg, \val
.endm
.irp 和 .irpc: 用於生成重複的代碼,irp 適用於參數列表, irpc 適用於字符列表。
.irp reg, r0, r1, r2, r3
mov \reg, #0
.endr
mov r0, #0
mov r1, #0
mov r2, #0
mov r3, #0
.if, .else, .else_if, .endif: 條件編譯指令,用於根據條件生成不同的代碼。
.if condition
// if block
.else
// else block
.endif
.equ 和 .equiv: 定義符號和賦值,.equ 允許重複定義,.equiv 則不允許重複定義。
.equ BUFFER_SIZE, 1024
.equiv UNIQUE_NAME, 1
.fill: 按指定模式填充數據塊。
.fill 10, 1, 0xFF // 填充10字節,每字節0xFF
incbin, .incdir, .include: 包含外部文件內容,.incbin用於二進制文件,.include用於彙編文本文件。
.incbin "path/to/binaryfile.bin"
.include "otherfile.s"
.repeat: 重複生成代碼指定次數。
.repeat 10
nop
.endr