当前位置: 首页 > news >正文

8. Mono与IL2Cpp简介

1.c#的执行过程

2.Mono

3.IL2CPP


1.c#的执行过程

假如我们想让一个外国厨师(电脑cpu)做一道鱼香肉丝, 但cpu厨师只懂一种非常底层的机器语言, 就像一套固定的手势和简单的指令(比如:,,, 放盐3); 作为程序员, 写的c#代码就像是用中文写的菜谱

在这里插入图片描述

cpu厨师看不懂中文菜谱, 那就需要一系列的翻译和解释过程; c#代码的执行过程分为三大步: 编写 -> 编译 -> 执行

1).编写代码我们用Visual Studio, Rider等工具(IDE, 集成开发环境)写下人类可读的c#代码(中文菜谱)

2).编译代码, 编译代码分为两个小步a.编译为中间语言(il/cil)- 角色登场: c#编译器(Roslyn)- 过程: 当我们点击生成或运行时, c#编译器将写的中文菜谱(c#源代码)翻译成中间语言il或通用中间语言(cil)的东西这一步将我们的中文菜谱翻译成了通用菜谱, 但是cpu厨师还是看不懂的b.打包为程序集(Assembly)- 编译生成的il代码和相关资源会被打包成一个或多个.dll或.exe, 我们统称它们为程序集; 比喻: 将世界通用菜谱语言写成的菜谱书被打包好, 准备送给厨师
3).设备上执行现在, 打包好的通用菜谱要被送到厨房(设备), cpu厨师终于要上场, 但它还是看不懂通用菜谱, 这个时候一位至关重要的翻译官出场a.加载和JIT编译(jit compilation)- clr 可以将它想象为整个厨房的环境和总管, .net程序必须在存在clr的环境中才能执行, 这个环境就是.net运行时- jit编译器是clr的现场翻译官, 它的工作方式如下:点菜, 当程序执行到某个方法(比如鱼香肉丝), clr才会把这段方法的il代码交给jit编译器; jit编译器(现场翻译官)立刻将这段il代码编译成当前cpu平台能直接理解的原生机器码; 执行并缓存, cpu会将拿到翻译好的指令, 立刻开始执行, jit编译器将已经翻译好的机器码缓存起来b.托管执行程序在clr的管理下运行, 我们称之为托管执行; CLR这位总管在整个过程中提供了许多强大的服务- 垃圾回收 (Garbage Collection, GC): 自动帮你收拾厨房,把切完不要的菜梗、用过的油碗(不再使用的内存)清理掉,你几乎不用担心“内存泄漏”的问题- 类型安全 (Type Safety): 确保厨师不会错把糖当盐放,避免了很多低级错误- 异常处理 (Exception Handling): 万一锅着火了(程序出错), 有一套机制来处理,不会让整个厨房炸掉

在这里插入图片描述


2.Mono

Mono(虚拟机)是一个跨平台的, 开源的.net framework的实现

在这里插入图片描述

mono的方式处理il, il代码和一个包含jit即时编译器的完整运行时环境会进入我们的包

3.IL2CPP

il2cpp是unity自己开发的一套构建时的后端处理技术(il to cpp)将中间语言(il)转换为c++代码

在这里插入图片描述

il2cpp的方式处理il, 纯原生机器码 + 一个不包含编译器的精简版运行时支持库
http://www.xdnf.cn/news/1469593.html

相关文章:

  • mysql中null值对in子查询的影响
  • B.50.10.03-Nginx核心原理与电商应用
  • 基于STM32单片机FM调频TEA5767功放收音机液晶显示设计
  • Zynq-7000 上 RT-Thread 的 MMU 与 SMP 优势分析
  • 七彩喜智慧养老:科技向善,让“养老”变“享老”的智慧之选
  • 23种设计模式——桥接模式 (Bridge Pattern)详解
  • 极大似然估计与概率图模型:统计建模的黄金组合
  • 洛谷 P1099 [NOIP 2007 提高组] 树网的核-普及+/提高
  • ShareX神操作:多区域截图+特效功能!
  • linux ubi文件系统
  • Linux 文件系统及磁盘相关知识总结
  • Webpack 有哪些特性?构建速度?如何优化?
  • 前端开发vscode插件 - live server
  • 【SuperSonic】:PluginParser 插件解析器
  • 雅菲奥朗SRE知识墙分享(六):『混沌工程的定义与实践』
  • 十二、软件系统分析与设计
  • Linux:进程信号理解
  • Day21_【机器学习—决策树(2)—ID3树 、C4.5树、CART树】
  • stm32——NVIC,EXIT
  • RHEL7.9、RHEL9.3——源码安装MySQL
  • 人工智能领域、图欧科技、IMYAI智能助手2025年8月更新月报
  • 辗转相除法(欧几里得算法)的证明
  • mysql进阶语法(视图)
  • 25高教社杯数模国赛【A题国奖核心成品论文+问题解析】第一弹
  • 如何提升技术架构设计能力?
  • 保姆级 i18n 使用攻略,绝对不踩坑(帮你踩完了)
  • 《C++ printf()函数的深度解析》
  • vue 经常写的echarts图表模块结构抽取
  • 串口通信—UART
  • 大尺度空间模拟预测与数字制图技术