Aarch64汇编语言
從ARMv8-A開始出現了64位的ARM指令集, ARM官方將64位的ARM指令集叫做Aarch64
Aarch64匯編中寄存器
Aarch64微處理器中,程序員可以使用31個64位的通用寄存器x0 ~ x30,堆棧指針寄存器sp,指令指針寄存器pc。也可以只使用這些通用寄存器中的低32位,即w0~w30,wsp。ARM遵循ATPCS規則,Aarch64匯編語言函數前8個參數使用x0-x7寄存器(或w0-w7寄存器)傳遞,多于8個的參數均通過堆棧傳遞,并且返回值通過x0寄存器(或w0寄存器)返回。
在使用軟中斷進行系統調時,系統調用號通過x8寄存器傳遞,用svc指令產生軟中斷,實現從用戶模式到管理模式的切換。例如:
關于系統調用syscall的系統調用號索引可以查看這里
https://elixir.bootlin.com/linux/latest/source/arch/sh/include/uapi/asm/unistd_64.h
Aarch64匯編語言
Aarch64匯編指令集所有指令的長度固定,每條指令是4字節(32位寬度),并且沒有Thumb指令集。
訪存指令
ARM32中的LDM、STM、PUSH、POP指令,在Aarch64中并不存在。取而代之的是LDP、STP指令,如一般在函數開頭用來代替PUSH.
例如,用IDA Pro逆向的某個Aarch64SO庫函數的開頭和結尾:
參考文獻
arm64匯編語言
Wiki ARM Architecture
Aarch64 Register and Instruction Quick Start
ARM The Architecture for the Digital World
淺析基于ARM的Linux下的系統調用的實現
總結
以上是生活随笔為你收集整理的Aarch64汇编语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDA+GDB远程调试android平台
- 下一篇: 网鼎杯2020 朱雀部分writeup