一、iOS汇编
1、真机:arm64汇编
寄存器
指令
堆栈
2、模拟器:x86汇编

二、lldb

(lldb)register read x0
(lldb)register read w0
(lldb)register write x0 0x002a1b
(lldb)register read w0
(lldb)register read

三、生成汇编文件

xcrun -sdk iphoneos clang -S -arch arm64 main.c -o main.s

四、寄存器
1、 通⽤寄存器
64bit的:x0 ~ x28
32bit的:w0 ~ w28(属于x0 ~ x28的低32bit)
x0 ~ x7通常拿来存放函数的参数,更多的参数使用堆栈来传递 x0通常拿来存放函数的返回值

2、 程序计数器
pc(Program Counter) 记录CPU当前指令的是哪一条指令 存储着当前CPU正在执⾏的指令的地址 类似于8086汇编的ip寄存器

3、 堆栈指针
sp(Stack Pointer)
fp(Frame Pointer),也就是x29

4、 链接寄存器
lr(Link Register),也就是x30
存储着函数的返回地址
 
5、 程序状态寄存器
cpsr(Current Program Status Register)
spsr(Saved Program Status Register),异常状态下使⽤
![程序状态寄存器1](https://upload-images.jianshu.io/upload_images/8285086-429a8c7b1240c185.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![程序状态寄存器2](https://upload-images.jianshu.io/upload_images/8285086-df56d274823a76c4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

五、怎么编写汇编指令
1、在Xcode的OC文件中内嵌写入

__asm{
"mov x0, 100"
}

2、用Xcode新建.s文件里面写汇编代码
arm.h

#ifndef arm_h
#define arm_h void test(); int add(int a, int b);
int sub(int a, int b); #endif /* arm_h */

arm.s

// 声明一个代码段
.text
.global _test, _add, _sub // 内部\私有函数
mycode:
mov x0, #0x1
mov x1, #0x2
add x2, x0, x1
ret // test函数的实现
_test:
; bl指令(函数调用)
bl mycode
mov x3, #0x2
mov x4, #0x1 ; b指令带条件
; mov x0, #0x5
; mov x1, #0x5
; cmp x0, x1
; bgt mycode
; mov x0, #0x5
; ret ; mycode:
; mov x1, #0x6 ; b指令
; b mycode
; mov x0, #0x5
; mycode:
; mov x1, #0x6 ; cmp指令
; mov x0, #0x1
; mov x1, #0x3
; cmp x0, x1 ; mov指令
; mov x0, #0x8
; mov x1, x0 ; add指令
; mov x0, #0x1
; mov x1, #0x2
; add x2, x0, x1 ; sub指令
; mov x0, #0x5
; mov x1, #0x2
; sub x2, x0, x1
ret // add函数的实现
_add:
add x0, x0, x1
ret // sub函数的实现
_sub:
sub x0, x0, x1
ret

使用的时候跟C语言的使用方式一致,导入头文件,直接调用全局(global)函数。

iOS相关的ARM汇编的更多相关文章

  1. iOS 逆向之ARM汇编

    最近对iOS逆向工程很感兴趣. 目前iOS逆向的书籍有: <Hacking and Securing IOS Applications>, <iOS Hacker's Handboo ...

  2. iOS程序破解——ARM汇编基础

    原文在此:http://www.cnblogs.com/mddblog/p/4951650.html 一.Thumb指令与ARM指令 Thumb指令为16位,因此存储代码的密度高,节省存储空间.但是功 ...

  3. ARM汇编

    ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...

  4. 常用ARM汇编指令

    常用ARM汇编指令 [日期:2012-07-14] 来源:Linux社区  作者:xuyuanfan77 [字体:大 中 小]     在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初 ...

  5. 经常使用ARM汇编指令

    一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...

  6. 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 :  -- AR ...

  7. 大脸猫讲逆向之ARM汇编中PC寄存器详解

    i春秋作家:v4ever 近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中.当然,文中许多介绍 ...

  8. ARM 汇编的mov操作立即数的疑问

    1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别.偶然在网上搜到"faq ARM assembly",其中描述的几个问题还是值得好好研究一下. 2. 慢慢的 ...

  9. GNU ARM 汇编指令

    第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针.设置页表.操作 ARM的协处理器等.初始化完成后就可以跳转到C ...

随机推荐

  1. keil_v5生成.bin文件方法

    按ALT+F7,打开如下对话框 如上图,选择 After Build/ Rebuild下的Run#1,输入: C:/keil_v5/ARM/ARMCC/bin/fromelf.exe -bin -o ...

  2. centos上 小程序部署 nginx+https+ssL 提示错误:对应的服务器 TLS 为 TLS 1.0 ,小程序要求的 TLS 版本必须大于等于 1.2

    解决办法: 1.nginx版本必须是1.0.6以上 2.修改配置文件,修改server内的ssl_protocols内容,增加TLSv1.2 3.重启nginx. ./nginx -s reload ...

  3. 检查邮箱IP是否在国际反垃圾邮件组织的黑名单中

    有时候邮件发不出去,很有可能就是邮件服务器的IP被国际上一些反垃圾组织列入黑名单了,这时你可以通过返回的邮件判断是否进入黑名单,或者通过以下查询地址看是否被列入,然后一个个申请移除: http://m ...

  4. [STM32F103]RTC日历

    使能PWR和BKP时钟: a) RCC_APB1PeriphClockCmd(); 使能后备寄存器访问: a) PWR_BackupAccessCmd(); 配置RTC时钟源,使能RTC时钟: a)  ...

  5. Python 编码的一些问题

    >>> ord('中') 20013 >>> chr(65) 'A' >>> chr(20013) '中' - Python文件默认是UTF-8编 ...

  6. es6 和 python 语法比较

    http://www.linchaoqun.com/html/cms/content.jsp?id=1509528630774 Python3笔记:Python与ECMAScript部分语法对比 ht ...

  7. 离职有感(CVTE,创业公司,求职...)

    最近几个月,真的各种心酸......体现出来的就是对自己身体的,心里的.......6月底离职以来,一直到现在,经历了两个公司...才这么三个月,就经历了两个公司......我都忍不住怀疑自己,是不是 ...

  8. 前端生成excel

    一:安装依赖 1:在package.json 中加入四个依赖包 (1): "json2csv": "^3.11.0", (2):"file-saver ...

  9. VUE 引入阿里图标库

    本身项目是VUE, Element-UI项目, 所以内置Element-UI图标库 地址如下, https://element.eleme.cn/#/zh-CN/component/icon 使用时: ...

  10. 43_redux_counter应用_使用redux调试用具

    1.要在chrome中安装插件 redux-devtools_2_12_1.crx 2.在开发工具注入 npm install --save-dev redux-devtools-extension ...