iOS - LLVM的中间代码(IR)

news2024/11/14 6:22:49

文章目录

  • iOS - LLVM的中间代码(IR)
    • 1. 转为汇编代码
    • 2. 中间代码(IR)
      • 2.1 Objective-C在变为机器代码之前,会被LLVM编译器转换为中间代码(Intermediate Representation)
      • 2.2 可以使用以下命令行指令生成中间代码
      • 2.3 语法简介

iOS - LLVM的中间代码(IR)

1. 转为汇编代码

通过如下操作,可以将OC类转为汇编代码

2. 中间代码(IR)

将OC文件转为C++代码实际上不一定和真正执行的代码一样,最准确的是中间代码

2.1 Objective-C在变为机器代码之前,会被LLVM编译器转换为中间代码(Intermediate Representation)

OC -> 中间代码(.ll) -> 汇编、机器代码

中间代码无需考虑 CPU 架构(x86、arm64等)。他是通用的代码,最后转成汇编、机器代码的时候才会转成对应的 CPU 架构代码

2.2 可以使用以下命令行指令生成中间代码

clang -emit-llvm -S main.m

2.3 语法简介

  • @ - 全局变量
  • % - 局部变量
  • alloca - 在当前执行的函数的堆栈帧中分配内存,当该函数返回到其调用者时,将自动释放内存
  • i32 - 32位4字节的整数
  • align - 对齐
  • load - 读出,store 写入
  • icmp - 两个整数值比较,返回布尔值
  • br - 选择分支,根据条件来转
  • label,不根据条件跳转的话类似goto
  • label - 代码标签
  • call - 调用函数

具体可以参考官方文档:https://llvm.org/docs/LangRef.html

@oubijiexi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1551858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL 索引:索引为什么使用 B+树?

Hash 索引不支持顺序和范围查询; 二叉查找树(BST):解决了排序的问题,极端情况下可能会退化成线性链表,查询效率急剧下降; 平衡二叉树(AVL) :通过旋转解决了平衡的问题,但是旋转操作效率太低&am…

蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)

目录 一、摆花 思路一: 确定状态: 初始化: 思路二: 确定状态: 初始化: 循环遍历: 状态转移方程: 二、数字三角形加强版 一、摆花 题目描述 小明的花店新开张,为了吸…

spring boot3自定义注解+拦截器+Redis实现高并发接口限流

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义限流注解 2.编写限流拦截器 3.注册拦截器 4.接口限流测试 写在前…

戴尔电脑Dell SupportAssist占用内存高,卸载Dell SupportAssist

咨询戴尔客服了解到,SupportAssist是机器出厂自带的一款应用,主要的功能是可以检查驱动更新以及做一些硬件方面的健康检测,有时候后台运行可能会导致进程占用内存比较大,导致访问被的应用崩溃。 咨询卸载不影响之后,然…

在CentOS7上部署Nginx并测试指南

Nginx部署测试 Nginx简介 Nginx是俄罗斯人Igor Sysoev编写的一款高性能的HTTP和反向代理服务器。 Nginx选择了epoll和kqueue作为网络I/O模型,在高连接并发的情况下,内存、CPU等系统资源消耗非常低,运行稳定。 正向代理与反向代理 正向代…

FLStudio多少钱FL Studio中文版软件序列号-激活码购买

fl studio是一款编曲软件,接触这款软件的大多都是做音乐的小伙伴吧,对于初学者想了解这款软件在意的应该就是它的价格。很多打算入手正版FL Studio的新手朋友都会纠结一个问题:哪个版本的FL Studio更适合我,到底应该入手哪一款FL …

Java安全篇-Fastjson漏洞

前言知识: 一、json 概念: json全称是JavaScript object notation。即JavaScript对象标记法,使用键值对进行信息的存储。 格式: {"name":"wenda","age":21,} 作用: JSON 可以作为…

OCP NVME SSD规范解读-15.DSSD set feature功能要求-2

启用IEEE1667隔离区(Enable IEEE1667 Silo):特征标识符C4h允许开启符合IEEE1667标准的安全存储区功能,以实现数据的隔离和安全存储。 4.15.9章节描述了启用IEEE1667 Silo(通过Feature Identifier C4h标识的Set Feature命令)的相关…

C++:转义符(10)

在c中有一些字符无法被显示出来,所以需要使用些特殊字符加字母来展示 可以看到基本都是一个\加一个字母去只执行对应的一个效果 这里我选择几个对于当前来说比较重要的:\n ,\\ ,\t \n换行符 可以看到在c语言中他就是一个可以换行…

echarts图表动态监听dataZoom滑动,控制柱条的宽度以及数值的显示隐藏

当数值过多时,显示所有柱条看着会很凌乱且文字会挤在一起,于是就需要监听datazoom的滑动,拿到对应的阈值后做出相应的配置。 “dataZoom” 事件通常用于响应用户对图表进行数据缩放的操作。 这里是datazoom官网api地址:点击跳转至…

【计算机网络篇】数据链路层(4.1)可靠传输的相关概念

文章目录 🍔可靠传输的相关概念⭐分组丢失⭐分组失序⭐分组重复 🥚注意 🍔可靠传输的相关概念 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可以检测出帧在传输过程中是否产生了误码&…

基于SpringBoot后端实现连接MySQL数据库并存贮数据

目录 一、什么是MySQL数据库 二、基于SpringBoot框架连接MySQL数据库 1、首先添加MySQL依赖: 2、配置数据库连接: 3、创建实体类: 4、创建Repository接口: 5、使用Repository: 三、编写业务SQL语句 1、使用Spring Data…

大模型LLM的数学推理

1 算术 例如: 2 数学文字题 2.1 问题-答案 直接给出答案 2.2 问题-方程式-答案 给出解答的方程式(过程) 2.3 问题-论证-答案 给出论证的过程(应该含有方程式) 综上,考虑到视频的可视化过程,着…

java日志技术——Logback日志框架安装及概述

前言: 整理下学习笔记,打好基础,daydayup!!! 日志 什么是日志 程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息,通过日志可以进行操作分析,bug定位等 记录日志的方案 程…

Django之Celery篇(二)

一、Celery-任务的调用 1.1、异步任务调用 delay( )方法 from celery_task import *def delay():rs = send_email.delay(baizhan)print(rs.id)rs2 = send_msg.delay(SXT)print(rs2.id)1.2、定时任务调用 apply_async( )方法 from celery_task import * import datetimedef …

Linux文件系统和日志管理

文件系统的组成 Linux 文件系统会为每个文件分配两个数据结构:索引节点(index node) 和 目录项(directory entry),它们主要用来记录文件的元信息和目录层次结构。 索引节点,也就是 inode&#…

中医面诊笔记

目录 面部五脏分区面部六腑分区眼袋大,黑的原因 面部色诊颧骨发红阴虚火旺为什么面部其它地方不发红而是颧骨发红? 人中 面部五脏分区 面部六腑分区 眼袋大,黑的原因 水湿重,比如眼袋大,眼袋黑,这是水湿过…

docker 的八大技术架构(图解)

docker 的八大技术架构 单机架构 概念: 应用服务和数据库服务公用一台服务器 出现背景: 出现在互联网早期,访问量比较小,单机足以满足需求 架构优缺点: 优点:部署简单,成本低 缺点&#xff1…

利用python搭建临时文件传输服务

场景 如果想从一台服务器上传输文件又多种方法,其中常见的是利用scp进行传输,但是需要知道服务器的账号密码才能进行传输,但有时候我们并不知道账号密码,这个时候我们就可以通过python -m SimpleHTTPServer 命令进行传输文件 启…

【Web前端】CSS基本语法规范和引入方式常见选择器用法常见元素属性

一、基本语法规范 选择器 {一条/N条声明} 选择器决定针对谁修改 (找谁) 声明决定修改什么.。(干什么) 声明的属性是键值对.。使用 &#xff1a; 区分键值对&#xff0c; 使用 &#xff1a; 区分键和值。 <!DOCTYPE html> <html lang"en"> <head>&…