指令集架構(ISA)

算術與邏輯指令

算術與邏輯指令是處理器的口袋計算機:真正去「算東西」的那些指令。算術指令做數字的加、減等數學運算;邏輯指令則做逐位元的運算,例如 AND、OR、XOR,以及把位元往左或往右位移。它們是主力——程式所做的大多數有用工作,從結算購物車到加密訊息,最終都歸結為一長串這類指令。

在像 RISC-V 這樣的載入-儲存式 ISA 中,這些指令從暫存器讀入它們的輸入、再把結果寫回暫存器;它們從不碰記憶體。典型的一條會指名三個暫存器:一個接收結果,兩個提供運算元。例如「add x5, x6, x7」計算 x6 + x7 並存進 x5;「and x5, x6, x7」做逐位元的 AND。許多指令也有「立即值」形式,其中一個運算元是一個小常數,直接嵌進指令本身,寫法像「addi x5, x6, 10」(把 x6 加上 10)。不論哪種,輸入與輸出都是暫存器(或一個小常數),這正是這些指令快速的原因。

它們出現在哪裡:每個程式中的每一次計算,再加上多到出乎意料的記帳工作。計算陣列元素的位址、調整迴圈計數器、用位移與 OR 把兩個值打包進一個字組——這些全都是算術與邏輯指令,即使原始碼裡看不出明顯在「算數學」。它們刻意做得簡單,好讓硬體能在單一快速步驟中做完一條,並把許多條重疊起來。

若要計算「y = (a + b) - c」,且 a、b、c 在暫存器 x6、x7、x8:「add x5, x6, x7」把 a+b 放進 x5,接著「sub x5, x5, x8」減去 c。兩條算術指令,全在暫存器中,完全不碰記憶體。

多步驟的算式變成一串短短的暫存器對暫存器算術運算。

在載入-儲存式 ISA 中,這些指令依設計只用暫存器。如果你的資料在記憶體裡,你必須先「載入」它到暫存器、計算、再「儲存」回去——算術指令本身無法伸進記憶體。

又稱
ALU instructionscompute instructionsR-type instruction算術指令邏輯指令