關於CPU暫存器的那些事兒(3) 通用暫存器

2021-10-25 03:48:29 字數 1052 閱讀 9249

通用暫存器:是程式執行**最最常用,也是最最基礎的暫存器,程式在執行過程中,絕大部分時間都是在操作這些暫存器來實現指令的功能。

既然是通用的,那麼這些暫存器就沒有特殊的用途,應用程式愛怎麼使用怎麼使用,只要遵循乙個既定的潛規則即可。

eax: 通常用來執行加法,函式呼叫的返回值一般也放在這裡面

ebx: 資料訪問

ecx: 通常用來作為計數器,比如for迴圈 .//c++中this指標也是通過ecx來傳遞的,可以通過反彙編來驗證。

edx: 讀寫i/o埠時,edx用來存放埠號

esp: 棧頂指標,指向棧的頂部

ebp: 棧底指標,指向棧的底部,通常用ebp+偏移量的形式來定位函式存放在棧中的區域性變數

esi: 字串操作時,用於存放資料源的位址

edi: 字串操作時,用於存放目的位址的,和esi兩個經常搭配一起使用,執行字串的複製等操作

在x64架構中,上面的通用暫存器都擴充套件成為64位版本,名字也進行了公升級。上面的名字仍然是可以使用的,相當於訪問64位暫存器的低32位。

rax rbx rcx rdx rsp rbp rsi rdi

x64架構還增加了8個新的通用暫存器:

r8,r9,r10,r11,r12,r13,r14,r15

與32位cpu比起來,x64的暫存器資源非常豐富了,所以引數傳遞絕大多數都是用暫存器來傳了。暫存器傳參的好處是速度快,減少了對記憶體的讀寫次數。

當然,具體使用棧還是用暫存器傳引數,這個不是程式語言決定的,而是編譯器在編譯生成cpu指令時決定的,如果編譯器非要在x64架構cpu上使用執行緒棧來傳參那也不是不行,這個對高階語言是無感知的。

關於CPU暫存器的那些事兒(2) 暫存器是什麼

暫存器是cpu內部用來存放資料的一些小型儲存區域 主要是用於儲存資料的!主要是用於儲存資料的!主要是用於儲存資料的!當然,有時候也會儲存一些標誌資訊 控制資訊等,這些都可以看成一資料。x86架構cpu的指指令集是複雜指令集 cisc 提供了豐富的指令來實現強大的功能,與此同時也提供了大量暫存器來輔助...

關於CPU暫存器的那些事兒(6) 指令暫存器

段暫存器與cpu的記憶體定址密碼切相關,請參見 彙編的12種定址方式 早在16位的8086cpu時代,記憶體資源寶貴,cpu使用分段式記憶體定址技術 16位的暫存器能定址的範圍是64kb,通過引入段的概念,將記憶體空間劃分為不同的區域 分段,通過段基址 段內偏移段方式來定址。這樣一來,段的基位址儲存...

CPU中的主要暫存器

在cpu中至少要有六類暫存器。這些暫存器用來暫存乙個計算機字。根據需要,可以擴充其數目。下面詳細介紹這些暫存器的功能與結構。1.資料緩衝暫存器 dr 資料緩衝暫存器用來暫時存放由記憶體儲器讀出的一條指令或乙個資料字 反之,當向記憶體存入一條指令或乙個資料字時,也暫時將它們存放在資料緩衝暫存器中。緩衝...