美文网首页
ARM64汇编

ARM64汇编

作者: LucXion | 来源:发表于2021-05-26 13:53 被阅读0次

不同架构的汇编代码是不同的,这里研究的是真机ARM64架构的汇编

  • 通用寄存器

可以通过$register read命令查看,ARM64架构下有29个寄存器:x0-x28(64bit),隐藏的寄存器有w0-w28(属于x0-x28的低32bit)。

写入寄存器$register write cpsr 0

  • 程序计数器

pc (program count)

  • 堆栈指针

sp(Stack Pointer)

Fp(Frame Pointer),x29

  • 链接寄存器

lr(Link Register),x30

  • 程序状态寄存器

cpsr : current project status register

spsr : saved peoject status register 异常状态下使用

如何在xcode中编写汇编代码

  1. 在xcode中新建.s后缀文件
创建.s文件.png
  1. 同时创建一个同名的.h头文件与之对应

  2. 在.h中暴露方法,在.s中编写代码

<.h>
#ifndef Test_h
#define Test_h
void test (void);// 对外声明
#endif /* Test_h */
<.s>
.text // 文件写入text代码段
.global _test // 对外声明函数,因为汇编已经是底层了,要自己手动加下划线

_test:
mov x1 ,8
ret // 以ret 结尾,否则会穿透

mov、add、sub 指令

_test:
mov w1,#0x5  // w1 = 5
mov w2,#0x7  // w2 = 7
add w1 ,w1 ,w2 // w1 = w1 + w2
sub w3 , w1, 3 // w3 = w1 - 3
ret // 以ret 结尾,否则会穿透

cmp指令cmp w1,w2 : 将w1 - w2 的结果放到状态寄存器cpsr,cpsr不直接保存结果,结果会影响cpsr不同的位值

cpsr结构.png
_test:
;b指令 // ;也有注释的意思
mov w1,#0x5
mov w2,#0x5
cmp w1, w2 // b指令需要和cmp配合使用,会到状态寄存器内检查条件是否满足
beq jump  // 跳转到 jump私有方法
mov w3, 3
ret

jump: // jump实现
mov w1, 1
ret

b指令

指令条件码.png

bl指令

_test:
;bl指令
bl jump  // bl指令跳转到 jump后会返回并执行下面的代码
mov w3, 3 // 如果用的是b指令,如果满足条件跳转出去后不会再返回执行下面代码
ret

相关文章

  • ARM64汇编入门 - 汇编基础

    ARM64汇编入门 - 汇编基础ARM64汇编入门 - 汇编基础

  • ARM64汇编学习笔记一(初始汇编)

    ARM64汇编学习笔记一(初始汇编)

  • IOS arm64常用的汇编

    导论 生成汇编文件 寄存器 arm64 汇编条件域 arm64 汇编指令 总结 1. 生成汇编文件 2. 寄存器 ...

  • ARM 64 常见汇编指令

    ARM64常用的汇编指令 运算指令 程序跳转指令

  • iOS逆向

    ARM64汇编1、汇编初探[https://www.jianshu.com/p/f3ae7cef6659]2、函数...

  • arm64汇编基础

    iOS汇编 真机:arm64汇编 模拟器:x86汇编 将c语言的代码转化成汇编: 1. 寄存器 lldb查看当前a...

  • iOS汇编基础(二)寄存器

    以arm64为例 xcode调试汇编 1. xcode 查看运行时的汇编代码 debug -> debug wor...

  • ARM64 学习

    iOS汇编 真机 arm64汇编,GNU 模拟器 x86, AT&T 汇编 寄存器 指令 堆栈 通用寄存器 64b...

  • ARM 汇编学习记录

    1. 简介 根据 CPU 架构不同,汇编主要可以分为两种:模拟器上的x86 汇编、真机上的 arm64 汇编,主要...

  • 入门二

    [转]ARM64 汇编 寄存器 汇编指令栈栗子 逆向工程绕不过的一部分就是汇编指令的分析。我们iPhone里面用到...

网友评论

      本文标题:ARM64汇编

      本文链接:https://www.haomeiwen.com/subject/bmsksltx.html