資料儲存於主記憶體(RAM)內,處理器 CPU 在計算時,若每次都要從 RAM 拿取資料,速度會非常慢,而暫存器就是 RAM 的 propropromax 版,它位於處理器核心裡,速度比 RAM 快好幾十到上百倍,存取延遲極低,但數量非常有限(一個處理器通常只有幾個到十幾個通用暫存器)。
不同的暫存器有不同用途,例如:
在組合語言中,幾乎所有指令都是「暫存器之間」或「暫存器與記憶體之間」的操作,例如:
因此沒有暫存器,CPU 幾乎什麼事都做不了。因為必須先把資料放進暫存器才能進行大多數運算,CPU 無法直接對記憶體進行複雜運算,因此我們可以把暫存器看成組合語言的主角。
在 x86-64 架構(64 位元)裡,暫存器的名字通常以 r 開頭:
主要運算暫存器:rax(accumulator register)
用於儲存算術、邏輯操作
通用暫存器:rbx、rcx、rdx
rbx(base register)
基址暫存器
rcx(counter register)
記數暫存器,例如for迴圈的 i
rdx(data register)
用於儲存運算中的額外資料,或與 rax 搭配處理乘法、除法運算的高位部分
堆疊暫存器:
push rbp ; 保存舊的 rbp
mov rbp, rsp ; 設定新的基底位置