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

Mono里运行C#脚本25—mono_codegen

前面分析怎么样找到主函数Main的入口点功能,也就是说已经找到了这个函数的CIL代码。虽然找到了代码,但是还不能执行它的,因为它是一种虚拟机的代码。也就是说它是假的代码,不是现实世界存在的机器的代码,因此不能直接执行,必须经过后端编译器的再次编译才能真正运行它。下面就来分析一个代码生成的片段。

前面会把CIL代码都进行拆分,拆分的原则就是把顺序执行的指令全部放到一个基本块里,把分支跳转指令放到一个基本块,保证每个基本块只有最后一条指令是离开基本块的。

在mono里就是使用cfg->bb_entry来保存基本块的入口,bb->next_bb表示下一个基本块。

来看一下基本块的几项定义:

struct MonoBasicBlock {


http://www.kler.cn/a/469057.html

相关文章:

  • 【Linux】传输层协议UDP
  • STM32 软件I2C读写
  • 【论文+源码】基于Spring和Spring MVC的汉服文化宣传网站
  • C++11——2:可变模板参数
  • axios和fetch的实现原理以及区别,与XMLHttpRequest的关系,并结合react封装统一请求示例
  • 《C++11》各种初始化方式的详细列举与对比
  • jenkins入门--安装jenkins
  • C++实现图书管理系统(Qt C++ GUI界面版)
  • Python抓取豆瓣电影Top250
  • 2025工作管理综合指南:Jira、Confluence等Atlassian工具套件在工作管理中的应用
  • graylog配置日志关键字邮件Email告警
  • 区块链:四大方面引领数字革命新篇章
  • 力扣hot100——栈
  • 在科技查新中怎样判定其项目的新颖性?
  • 单片机复位电路基本理解教程文章·含上拉电阻理解电容开路理解!!!
  • Python中对象序列化以及反序列化的方法
  • Day 22:数据库与 Spring Data JPA
  • Unity3D仿星露谷物语开发17之空库存栏UI
  • vue3如何实现防抖?
  • atrust异常导致ERR_NETWORK_CHANGED
  • 2025-01-04 Unity插件 YodaSheet2 —— 基础用法
  • vscode中设置默认格式化工具pretter
  • 【图像处理】数据集合集!
  • 【软考网工笔记】计算机基础理论与安全——网络安全
  • 借助提示词工程,解锁高效应用开发之道
  • 计算机网络--UDP和TCP课后习题