組合語言與 CPU

指令集架構(ISA)

/ I-S-A /

如果你想對一台只懂固定詞彙的機器下命令,你首先需要那本字典:它接受的每一條命令、每條到底做什麼、運算元長什麼樣、有哪些暫存器。指令集架構(ISA)就是這本字典。它是硬體與任何在其上執行之軟體之間的約定——CPU 所理解的完整指令清單,以及這些指令所操作的狀態(暫存器、旗標、記憶體模型)。

單一指令是這本字典裡的一個條目:一條低階命令,像「把這兩個暫存器相加」或「把這個記憶體值載入暫存器」,編碼成 CPU 能解碼的特定位元組樣式。ISA 定義了這類指令的整套詞彙,外加各種規則:有幾個暫存器、它們的名字、位址如何形成、字組多大、每條指令如何編碼。關鍵是,ISA 是一份規格——一個對行為的承諾——與任何一顆實作它的晶片分開。Intel 與 AMD 都生產實作 x86-64 ISA 的晶片,所以同一份機器碼在兩者上都能跑。

ISA 正是那條分界線,使機器碼可跨晶片移植、卻無法跨架構移植。編譯成 x86-64 指令的程式不能在 ARM CPU 上跑,反之亦然,因為兩者懂的是完全不同的字典——這就是為什麼軟體會標示「適用於 x86-64」或「適用於 ARM」。它也是編譯器最終的目標層級:選擇一個 ISA,就是選擇允許編譯器發出哪些指令。

x86-64、ARM/AArch64 與 RISC-V 是三種 ISA;同一份 C 原始碼為各自編譯,會產生三串完全不同、彼此無法執行的機器碼。

ISA 是硬體與軟體的約定;指令是其詞彙裡的一個條目。

ISA(可見的約定——指令、暫存器、行為)有別於微架構(某顆晶片在內部如何實作它,含管線與快取)。兩顆晶片可共用同一 ISA,速度與內部結構卻天差地遠。

又称
ISAinstruction setarchitecture指令集