一直以來對暫存器的名稱、作用比較模糊,今天抽時間整理了下。
(一) 通用暫存器
作用:傳送和暫存資料,參與算數和邏輯運算。
(1)通用暫存器
16位的有8個:ax(accumulator),bx(base),cx(count),dx(data),bp(basepointer),sp(stack pointer),si(source index),di(destination index)
對應的32位為:eax,ebx,ecx,edx,ebp,esp,esi,edi
eax,ebx,ecx,edx為通用暫存器,其低16位為ax,bx,cx,dx,再進一步,每乙個還能分成兩個8位,如ax:ah-al,bx:bh-bl等。他們除能作為普通資料暫存器使用外,他們還有特殊作用:
ax為累加器,進行乘除運算,字的輸入輸出,中間結果的快取
bx基位址暫存器,除了作為通用暫存器,其主要功能是定址,存放偏移位址,與段暫存器結合使用。
cx為計數器,控制迴圈次數以及cl存放移位的位數
dx為資料暫存器,在乘除運算時,可以作為預設運算元參與運算。
si、di為變址暫存器,儲存單元在段內的偏移量,實現不同的定址方式。si儲存器指標、串指令中的源運算元指標。di儲存器指標、串指令中的目的運算元指標。
bp、sp為指標暫存器,bp
是基指標暫存器,當使用
[bp]
時,且沒有顯式給出段位址時,則預設使用
ss段暫存器中的段位址。(bx、
si、di預設使用
ds段暫存器)sp是棧指標暫存器,存放了指向棧頂的指標。
(二)控制暫存器
(2)指令指標暫存器
ip(instruction pointer),32位為eip,存放下次要執行的指令在**段中的偏移量
(3)標誌位暫存器
flag,32位為eflag, flag暫存器中的資料是按位起作用的,flag暫存器中儲存的資訊通常又被稱為程式狀態字(psw)
位數標誌
ofdf
iftf
sfzf
afpf
cf全稱
overflow flag
direction flag
interrupt
-enable flag
trap flag
sign flag
zero flag
auxiliary carry flag
parity flag
carry flag
意義溢位標誌
方向標誌
中斷允許標誌
追蹤標誌
符號標誌(結果是否為負數)
零標誌位(結果是否為0)
輔助進製標誌
奇偶標誌(結果中1的個數)
進製標誌
(參考內容:
(三)段暫存器
根據記憶體分段的管理模式而設立段暫存器。16位cpu的段暫存器分別是:
cs:(code segment) **段暫存器
ss:(stack segment)堆疊段暫存器
ds:(datasegment)資料段暫存器
fs:附加段暫存器(標誌段暫存器)
gs:附加段暫存器(全域性段暫存器)
關於fs暫存器,當系統執行在ring3時,fs 值為指向的段是 gdt 中的 0x38 段,基位址為 當前執行緒 的執行緒環境塊( teb ),所以該段也被稱為「teb 段」。當系統執行在ring0時,fs 指向的段是 gdt 中的 0x30 段,該位址指向系統的處理器控制區域( kpcr )。這個區域中儲存這處理器相關的一些重要資料值,如 gdt 、 idt 表的值等等。
(參考博文
對於訪問某個段的程式,必須將段選擇符載入到乙個段暫存器中,通過段選擇符去定位段描述符表中的乙個段描述符來指定乙個段,段描述符中包含訪問乙個段的所有資訊,包括段基址、段長度、段屬性等。
(段選擇符、段描述符參考:
8086cpu中,只有bx,si,di,bp可以以[..]的方式使用
ARM暫存器整理
arm有37個暫存器,31個通用暫存器 r0 r15 32位 和6個狀態暫存器 1.通用暫存器 使用者模式 系統模式 特權模式 中止模式 未定義指令模式 外部中斷模式 快速中斷模式。可分為 未備份暫存器r0 r7 備份暫存器 r8 r14 程式計數器 pc r15 注 r0 r7在所有模式下指的同一...
VIM基礎概念(暫存器)
於 現在已經可以熟練使用vim的大多數基本命令 功能來進行專案 的開發了,但是在專案的開發過程中,依然會感覺到一些操作效率比較低,比如通過h j k l來進行游標的大範圍移動這類操作,顯然vim提供了更高效的命令操作方式。最近經常需要完成的工作就是需要在 之間來回的複製 貼上 搜尋和替換,常用的d ...
暫存器的「位址」概念
暫存器的位址就是 記憶體位址 分為 機器語言 指令仍用這種位址指定乙個運算元的位址或一條指令的位址。這種 定址方式 在intel的分段結構中表現得尤為具體,它使得ms dos或windows程式設計師把程式分為若干段。每個邏輯位址都由乙個段和偏移量組成。線性位址是乙個32位的 無符號整數 可以表達高...