本篇我们的目标是在iPhone上运行arm64,C语言,C++和OC程序!
- Clang
对于iOS开发者来说,Clang编译器一点也不陌生,Clang是一个C语言、C++、Objective-C、C++语言的轻量级编译器。源代码发布于BSD协议下,是基于LLVM的,也是Xcode 第一的编译器。
- 交叉编译
指在一个平台上生成另一个平台上的可执行代码。现在我们就在Mac上写代码,在iPhone上运行,想想都刺激!
- 设备环境
使用的是Mac和越狱iOS13.2.2的iPhoneX
Arm64
- 新建一个hello.txt文本
- 把下面代码复制进去,保存退出
.extern _printf
.align 4
.text
.global _main
_main:
stp x29, x30, [sp,#-0x10]! ;保存 x29 和 x30 寄存器到栈,!用来控制基址变址寻址的最终新地址是否进行回写操作
mov x29, sp ;将 sp 寄存器放入 x29 寄存器
sub sp,sp,#0x20 ;分配栈空间
adr x0,msg ;第一个参数
bl _printf
add sp,sp,#0x20 ;释放栈空间
mov sp,x29 ;将 x29 给 sp
ldp x29,x30,[sp],0x10 ;出栈给 x29 和 x30
ret ;返回
msg:
.asciz "Hello,worl