iOS arm64常用匯編

1.寄存器

通用寄存器

? ?(1)64bit: x0-x28

? ?(2)32bit:w0-w28(屬于x0-x28低32bit)

? ?(3)x0-x7通常用來存放函數(shù)的參數(shù),更多的參數(shù)使用堆棧來傳遞

? ?(4)x0通常作為函數(shù)返回值

程序計(jì)數(shù)器

pc(Program Counter)? ??

記錄CPU當(dāng)前執(zhí)行的是哪一條指令

存儲著當(dāng)前CPU正在執(zhí)行的指令地址

類似于8086匯編的ip寄存器

堆棧指針

鏈接寄存器

lr(Link Register), 也就是x30

存儲著函數(shù)的返回地址

程序狀態(tài)寄存器

cpsr(current program status register)

2.指令

? ? (1)ret:返回

? ? ? ? ? ? 將lr(x30)寄存器的值賦值給pc

? ? (2)mov:全稱move,把后面內(nèi)容的移動到前面寄存器

? ? ? ? mov x0, #0x8

? ? (3)add:將后面x0+x1,賦給x2

? ? ? ? mov x0, #0x1

? ? ? ? mov x1, #0x2

? ? ? ? add x2,? x0, x1

????(4)sub:將后面x0-x1,賦給第x2

????????mov x0, #0x5

? ? ? ? mov x1, #0x2

? ? ? ? sub x2,? x0, x1

? ? (5)cmp:比較指令,x0 - x1,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位

? ? ? ? mov x0, #0x3

? ? ? ? mov x1, #0x1

? ? ? ? cmp x0, x1

? ? (6)b:跳轉(zhuǎn)指令,b直接跳轉(zhuǎn)到mycode對應(yīng)的地址

? ? ? ? b(條件) 目標(biāo)地址

? ? ? ? b mycode

? ? ? ? mov x0, #0x5

? ? ? ? mycode:

? ? ? ? mov x1, #0x6

? ? (7) bl:帶返回的跳轉(zhuǎn)指令

? ???????bl(條件) 目標(biāo)地址 (類似函數(shù)調(diào)用)

? ? ? ? 執(zhí)行的操作:(1)將下一條指令的地址存儲到lr(x30)寄存器中(2)跳轉(zhuǎn)到標(biāo)記處,執(zhí)行代碼

? ? (8)ldr:從內(nèi)存中讀取數(shù)據(jù)

? ? ? ? ldr x0, [x1]? ? ?;(x1里面存的是地址 取出一定大小的數(shù)據(jù)? 數(shù)據(jù)大小取決于x0的大小)

? ? ? ? ldr x0, [x1, #0x4]??(取x1中存的地址? 加上立即數(shù)0x4? , 最終地址中的數(shù)據(jù)? 賦給x0)

? ? ? ? ldr x0, [x1, #0x4]!? ? ;(同上? 多了一個 x1中的地址值? 等于最終地址值)

? ? (9)ldur:去內(nèi)存中的數(shù)據(jù)放到寄存器

????????ldur x0, [x1, #-0x4]? ? ? ? ;立即數(shù)為負(fù)

? ? (10)ldp:從內(nèi)存中讀取數(shù)據(jù),放到一對寄存器中(p是pair的簡稱,一對的意思)

? ? ? ? ldp w0, w1, [x1, #0x4]? ??

? ? (11)str:往內(nèi)存中寫入數(shù)據(jù)

? ? ? ? str w0,[x1, #0x4]? ? ? ;把w0寄存器中的數(shù)據(jù)放到x1內(nèi)存中? ? ? ??

? ? ? ? stur w0, [x1, #-0x4]

? ? ? ? stp w0, w1, [x1, #0x4]

? ? (12)條件域(跟在指令后并沒有空格):bl:帶返回的跳轉(zhuǎn)指令

????????EQ:equal,相等

????????NE:not equal, 不相等

????????GT:great than, 大于

????????GE:great or equal, 大于等于

? ? ? ? LT:less than, 小于

????????LE:less or equal, 小宇等于

????????beq mycode(找CPSR中Z位 1就跳, 不是1 就不跳,也就是之前結(jié)果為0就跳)?

? ? (13)內(nèi)存操作

3.堆棧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容