匯編之常識(一)匯編基礎
CPU等硬件結(jié)構
- 數(shù)據(jù)總線
- 地址總線
- 控制總線
匯編之寄存器(二)寄存器
數(shù)據(jù)地址寄存器
? ? 數(shù)據(jù)計算的臨時存儲要出,做累加鸳君,技術,地址保存等功能
浮點和向量寄存器
? ? 浮點數(shù)寄存器:64位:處理浮點數(shù)
? ? 向量寄存器:128位:支持向量運算
SP寄存器與FP寄存器
?? 儲存棧頂和棧底地址
?? SP寄存器:保存棧頂?shù)刂?br>
?? FP寄存器:屬于通用寄存器患蹂,在某些時刻利用它保存棧底地址
通用寄存器
?? 這些寄存器通常用來存放一般性的數(shù)據(jù)或颊,稱為通用寄存器(有時也有特定用途)
假設內(nèi)存中有塊紅色內(nèi)存空間的值是3,現(xiàn)在想把它的值加1传于,并將結(jié)果存儲到藍色內(nèi)存空間
image.png
- CPU首先會將紅色內(nèi)存空間的值放到X0寄存器中:mov X0,紅色內(nèi)存空間
- 然后讓X0寄存器與1相加:add X0,1
- 最后將值賦值給內(nèi)存空間:mov 藍色內(nèi)存空間,X0
PC寄存器(指令指針寄存器)
- 指示了CPU當前要讀取指令的地址(指向馬上要執(zhí)行的代碼地址)
- 在內(nèi)存或者磁盤上囱挑,指令和數(shù)據(jù)沒有任何區(qū)別,都是二進制信息
- CPU在工作的時候把有的信息看做指令沼溜,有的信息看做數(shù)據(jù)平挑,為同樣的信息賦予了不同的意義
?? ? 比如 1110 0000 0000 0011 0000 1000 1010 1010
?? ? 可以當做數(shù)據(jù) 0xE003008AA
?? ? 也可以當做指令 mov x0, x8 - CPU根據(jù)什么將內(nèi)存中的信息看做指令?
?? ? CPU將pc指向的內(nèi)存單元的內(nèi)容看做指令
?? ? 如果內(nèi)存中的某段內(nèi)容曾被CPU執(zhí)行過系草,那么它所在的內(nèi)存單元必然被pc指向過
bl指令
待續(xù)