在cpu中有三大匯流排:
位址匯流排他們對應連線cpu的:資料匯流排
控制匯流排
暫存器對程式設計師來說,運算器控制器
cpu
中最主要部件是暫存器
,可以通過改變暫存器的內容來實現對cpu的控制
;不同的cpu,暫存器的個數、結構是不相同的。
那麼w0 到 w28 這些是32位的. 因為64位cpu可以相容32位.所以可以只使用64位暫存器的低32位.比如 w0 就是 x0的低32位!
比如 1110 0000 0000 0011 0000 1000 1010 1010可以當做資料 0xe003008aa
也可以當做指令 mov x0, x8
cpu將pc指向的記憶體單元的內容看做指令
如果記憶體中的某段內容曾被cpu執行過,那麼它所在的記憶體單元必然被pc指向過
新建乙個工程,打個斷點,run,跑起來後,程式斷到斷點的位置上。如下圖:
如何檢視彙編的**呢?如下圖:
因為我是用模擬器測試截圖的,有些彙編指令不太一樣。在此僅做乙個參考。
如下圖:
上圖中,可以看到,x0到x5的暫存器,每個暫存器都是以0x開頭,後面跟著16位數。這是為什麼呢?
在上文中說過,暫存器的型別:arm64 一共有31個 64位的通用暫存器
。64位
表示乙個通用暫存器有64根電線連著,即可表示64位的二進位制
。每4個二進位制
表示1個16進製制位
,即64位二進位制
等價於16個16進製制位
。0x表示16進製制
的意思,所以,每個暫存器都是以0x打頭,後面跟著16個16進製制位的數。
資料位址暫存器浮點和向量暫存器
資料位址暫存器
通常用來做資料計算的臨時儲存、做累加、計數、位址儲存等功能
。定義這些暫存器的作用主要是用於在cpu指令中儲存運算元,在cpu中當做一些常規變數來使用
。
因為浮點數的儲存以及其運算的特殊性,cpu中專門提供浮點數暫存器來處理浮點數
浮點暫存器 64位: d0 - d31 32位: s0 - s31現在的cpu支援向量運算.(向量運算在圖形處理相關的領域用得非常的多)為了支援向量計算系統了也提供了眾多的向量暫存器.
向量暫存器 128位:v0-v31
彙編03 暫存器
乙個cpu由以下幾個部分組成 1 運算器 負責資訊處理 2 暫存器 進行資訊儲存 3 控制器 控制各種器件進行工作 4 內部匯流排 連線各種器件 外部匯流排實現cpu和主機板其他部件的聯絡 8086cpu的所有暫存器都是16位的,可以存放兩個位元組,ax bx cx dx這4個暫存器通常用來存放一般...
06 安全攻防之迴圈 選擇
cmp把乙個暫存器的內容和另乙個暫存器的內容或立即數進行比較。但不儲存結果,只是正確的更改標誌。一般cmp做完判斷後會進行跳轉,後面通常會跟上b指令!1 假設switch語句的分支比較少的時候 例如3,少於4的時候沒有意義 沒有必要使用此結構,相當於if。2 各個分支常量的差值較大的時候,編譯器會在...
08 安全攻防之Mach O檔案
mach o是一種檔案格式,是mac上可執行檔案的格式,類似於windows上的pe格式 portable executable linux上的elf格式 executable and linking format 我們編寫的c c swift oc,最終編譯鏈結生成mach o可執行檔案 總共有1...