參考資料:https://www.swansontec.com/sregisters.html
x86家族的CPU都有8個通用寄存器,每一個寄存器的名字都是一組單詞的縮寫。就連這四個分別叫做%eax,%ebx,%ecx,%edx的寄存器,盡管看似是隨意按照abcd的字母排序的,其實這a,b,c,d也分別是四個單詞的縮寫。
%——百分號表示這是一個寄存器。 末尾的x或許是register的縮寫?(這句是我猜的)
e表示extend 意思是擴展到了32位。因為以前的intel寄存器都是16位的,它們的名字就是%ax,%bx等等,所以擴展到32位之后就在開頭加上一個e,改名叫%eax,%ebx等
1. EAX - Accumulator Register(累加器)
當你寫一個函數,最后返回一個值x(return x),那么這個x就要被存到%eax.
當你要把一個數字擴展成64位,那么%eax存這個數的低32位,%edx存這個數的高32位。
2. EBX - Base Register(基地址寄存器)
在所有的通用寄存器里,EBX是唯一一個沒有什么重要的專門用途的寄存器,你可以用它存一個計算過程中的中間變量,或者一個指針等等。
3. ECX - Counter Register(計數寄存器)
在x86中,ecx就是那個程序中無處不在的計數變量i,x86中每一個計數相關的指令都要用到ecx。
4. EDX - Data Register(數據寄存器)
在除了累加器之外的其余七個通用寄存器里,edx與累加器的聯系最為緊密。(當你要把一個數字擴展成64位,那么%eax存這個數的低32位,%edx存這個數的高32位。)
后面四個,大家可以看文章開頭的資料,我就懶得翻譯了。