【Android 逆向】x86 汇编 ( align | db | dw | dd | nop | 伪指令 )
文章目錄
- 一、align 字節對齊指令
- 二、db / dw / dd 指令
- 三、nop 指令
- 總結
一、align 字節對齊指令
align 字節對齊 ; 默認情況下是 161616 字節對齊 ; 該指令是偽指令 , 沒有機器碼與之對應 ;
align 16h內存中是分頁的 , 如果要記錄每一塊內存的使用狀況 , 需要占用很大的內存空間 , 為了方便系統中內存的使用與記錄 , 首先將操作系統分頁 , 只需要記錄每個分頁的使用情況即可 , 每個分頁只有 使用 / 沒有使用 兩種狀態 ;
如果有 888 個分頁 , 只需要有 888 位 , 111 字節 , 就可以記錄 888 個分頁中 , 哪塊內存使用了 , 哪塊內存沒有使用 ;
實際中 , 每個分頁有 444 K , 以分頁為單位 , 將內存分配給各個進程 ;
分頁內部的數據 , 如果是亂的 , 如 第 000 字節有數據 , 然后空了 222 字節 , 第 333 字節才有下一個數據 , 這樣內存的使用效率很低 , 這里就需要引入對齊操作 ;
將分頁中的數據按照 444 字節對齊 , CPU 如果讀取內存中的數據 , 可以直接讀取數據 , 加載內存數據到高速緩存中 ; 如果沒有對齊 , 還要進行地址操作 , 從間隔的內存中獲取數據 ;
如果設置了 161616 字節對齊 , 數據只有 151515 字節 , 那么在數據后會空出一個字節 ;
二、db / dw / dd 指令
db 指令 , 用于聲明 字符 / 字符串 常量 ;
# 聲明字符 db 'a'# 聲明字符串 db 'a', 'b', 'c'dw 指令 , 用于聲明 222 字節短整型 ;
dw 0x1234dd 指令 , 用于聲明 444 字節長整型 ;
dd 0x12345678上述 db , dw , dd 指令 , 都是偽指令 , 沒有機器碼與之對應 ;
三、nop 指令
nop 指令 是 空指令 , 沒有參數 ; 該指令的作用是不做任何操作 ;
x86 匯編中 , nop 指令有對應的機器碼 0x90 與之對應 ;
總結
align 字節對齊 , db 聲明字符 / 字符串 , nop 空指令
cmp 比較 , test
call 調用 , jmp 跳轉 (a , b , c , g , l , o , p , s , z , e , n)
lea , lds , les , lfs , lgs , lss , mov 移動
push , pop , pushf , popf , pushd , popd , pushad , popad , pusha , popa
ret , retn , set
add , sub , mul , div
xor , not , shl , shr , sal , sar , rol , ror , rcl , rcr
總結
以上是生活随笔為你收集整理的【Android 逆向】x86 汇编 ( align | db | dw | dd | nop | 伪指令 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 逆向】ARM CPU
- 下一篇: 【错误记录】Android 分区存储下的