一、代码准备
Person
继承自NSObject
, 添加-test
的声明, 并添加消息转发代码
- 在
main
函数中使用Person实例对象
调用-test
, 执行程序
二、查看cpp文件
- 可以通过终端执行命令查看
cpp
文件
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc Person.m
三、通过Xcode查看汇编代码
- 可以通过Xcode查看汇编代码
四、查看llvm中间代码
- 我们编写OC代码, 在底层实际上转化成了
llvm汇编代码
, 然后在转成汇编和机器语言 - 我们可以使用终端命令获取
llvm中间代码
clang -emit-llvm -S Person.m
语法简介: 具体可以参考官方文档:llvm.org/docs/LangRe…
@ - 全局变量
% - 局部变量
alloca - 在当前执行的函数的堆栈帧中分配内存,当该函数返回到其调用者时,将自动释放内存
i32 - 32位4字节的整数
align - 对齐
load - 读出,store 写入
icmp - 两个整数值比较,返回布尔值
br - 选择分支,根据条件来转向label,不根据条件跳转的话类似 goto
label - 代码标签
call - 调用函数