以arm64为例
debug -> debug workflow -> always show disassembly
2. Xcode改变pc值
3. 单步运行一步汇编代码:ni
4. 读取某个寄存器
5. 进入某个汇编函数
按住control+Xcode的下箭头键
6. 新建汇编文件或内嵌汇编代码
新建:command+N 然后选择assembly file
内嵌:
CPU首先会将红色内存空间的值放到X0寄存器中:mov X0,红色内存空间
然后让X0寄存器与1相加:add X0,1
最后将值赋值给内存空间:mov 蓝色内存空间,X0
xcode调试汇编
1. xcode 查看运行时的汇编代码debug -> debug workflow -> always show disassembly
2. Xcode改变pc值
register write pc 0x1005d6928
3. 单步运行一步汇编代码:ni
4. 读取某个寄存器
(lldb) register read x0x0 = 0x0000000000000000
(lldb)
5. 进入某个汇编函数
按住control+Xcode的下箭头键
6. 新建汇编文件或内嵌汇编代码
新建:command+N 然后选择assembly file
内嵌:
int main(int argc, char * argv[]) {asm("mov w0,#0x0\n""adds w0,w0,#0x1\n");return 0;
}
一 通用寄存器
- ARM64拥有有31个64位的通用寄存器 x0 到 x30,这些寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)
- 那么w0 到 w28 这些是32位的. 因为64位CPU可以兼容32位.所以可以只使用64位寄存器的低32位.
- 比如 w0 就是 x0的低32位!
Xcode查看寄存器:
- 通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算。
- 假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间
CPU首先会将红色内存空间的值放到X0寄存器中:mov X0,红色内存空间
然后让X0寄存器与1相加:add X0,1
最后将值赋值给内存空间:mov 蓝色内存空间,X0