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

clr的执行模型-笔记

学习来源:《CLR via C by Jeffrey Richter 》第四版,第1章  clr的执行模型

1.C#编译生成执行程序集文件

编译文件的组成:pe32/pe32+头,clr头,元数据,IL

pe32/pe32+头:windows标准执行文件头

clr头:clr版本,标志,入口方法,元数据,资源,强名称

编译后由CLR执行

2.CLR执行程序集

CLR的JIT编译器将方法的IL转换成本机cpu指令,

第一次调用时由jtt编译器转换成cpu指令,存储到内存中,第二次调用不用再编译,直接从内存获取

不安全代码:

jtt编译unsafe代码时,会检测程序集是否授予了System.Security.Permissions.SecurityPermission权限,

而且是否设置System.Security.Permissions.SecurityPermissionFlag的值是SkipVerification。

如果有该标志,JIT编译器不会编译不安全代码,并允许代码执行。clr信任这些代码,并希望对地址及字节的直接操作不会造成损害。

如果未设置该标志,则直接抛出异常,禁止方法执行。

3.本机代码生成器:NGen.exe

NGen.exe将IL代码编译成本机代码文件(编译好的机器码/汇编码)。由于代码已编译好,就不需要JIT再次编译IL代码了。


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

相关文章:

  • 微信小程序 app.js 简单调用其他页面的方法
  • 【python】类似FileZilla Client的程序
  • 嵌入式学习第十六天!(Linux文件查看、查找命令、标准IO)
  • 【Nginx】nginx入门
  • 学习使用Flask模拟接口进行测试
  • H5 自适应超人背景引导页源码
  • FollowYourPose 安装踩坑
  • 【C++】C++入门— 类与对象初步介绍
  • 数据库-计算机三级学习记录-4DBAS功能概要设计
  • 浙政钉(专有钉钉)
  • 重写Sylar基于协程的服务器(4、协程调度模块的设计)
  • moment.js 常用方法使用
  • 【数据分享】1929-2023年全球站点的逐月降雪深度数据(Shp\Excel\免费获取)
  • 从源代码看Chrome 版本号
  • 蓝桥杯嵌入式第七届真题(完成) STM32G431
  • elasticsearch 索引模版
  • Kotlin快速入门系列8
  • 世界就是一个草台班子
  • 字节序问题
  • 大路灯护眼灯哪个牌子好学生用?适合学生使用的大路灯推荐