03 安全攻防之暫存器

2021-10-07 18:54:26 字數 2093 閱讀 8218

在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...