小碼哥iOS學習筆記第十六天: llvm中間代碼

1、代碼準備

  • Person繼承自NSObject, 添加-test的聲明, 並添加消息轉發代碼

  • main函數中使用Person實例對象調用-test, 執行程序

2、查看cpp文件

  • 能夠經過終端執行命令查看cpp文件
xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc Person.m
複製代碼

3、經過Xcode查看彙編代碼

  • 能夠經過Xcode查看彙編代碼

4、查看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 - 調用函數
複製代碼
相關文章
相關標籤/搜索