sp 需要16位對齊
函數(shù)參數(shù)從x0開始調(diào)用
常量的獲取
adrp 指令:
adr(address)p(page)
adrp x0, x1
第一步:將1的值左移12位 (1 0000 0000 0000)= 0x1000
第二步:將pc寄存器的低12位清零
第三步:將前兩步的結(jié)果相加,放入x0寄存器
adrp是用來計算指定的數(shù)據(jù)地址到當(dāng)前(runtime)pc值的相對偏移
因為后12bit為0嗦董,所以得到的偏移量是不精確的强重,后面的12bit(4KB)是用來自己去精確確定的悉稠。這個指令的目的是在以的到的地址為基地址虏劲,4KB的偏移地址以內(nèi)一定有你要找的數(shù)據(jù)缘琅。
下移條指令一般就是去精確這個偏移地址的
代碼在編譯的時已經(jīng)確定了代碼中的常量的地址缩宜,所以后面的偏移地址計算機(jī)本已經(jīng)知道了肘迎。
全局變量是地址傳遞,所以里面是 int* 類型锻煌,要去到這個地址指向的值要用 *(int *)
所以要顯示的時候是 p *(int *) 0x1002e8d10
外掛在游戲更新后就不能用了妓布,是因為游戲更新的時候這些地址改變了,這些地址是在編譯的時候確認(rèn)的宋梧,重新編譯會導(dǎo)致地址改變匣沼。