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

C#等高级语言运行过程

C#等高级语言运行流程:

  1. 假设您编写了一个 C# 程序并将其保存在一个称为源代码的文件中。

  1. 特定于语言的编译器将源代码编译成 MSIL(Microsoft 中间语言),也称为 CIL(通用中间语言)或 IL(中间语言)及其元数据。元数据包括程序的每个功能的所有类型、实际实现。MSIL 是与机器无关的代码。

  1. 现在,CLR应运而生。CLR 为 MSIL 代码提供服务和运行时环境。在内部,CLR包括JIT(即时)编译器,它将MSIL代码转换为由CPU进一步执行的机器代码。CLR 还使用 .NET Framework 类库。元数据向 CLR 提供有关编程语言、环境、版本和类库的信息,CLR 通过该信息处理 MSIL 代码。由于 CLR 很常见,因此它允许用不同语言编写的类的实例调用用另一种语言编写的类的方法。

CLR(Common Language Runtime)是一个可由多种编程语言使用的“运行时”,是 .NET Framework 的基本虚拟机组件。它是 .NET Framework 中的运行时环境,它运行代码并通过提供各种服务帮助简化开发过程。基本上,它负责管理 .NET 程序的执行,而不管任何 .NET 编程语言。在内部,CLR 实现了 VES(虚拟执行系统),它在 Microsoft 的 CLI(公共语言基础结构)实现中定义。

公共语言规范 (CLS):

它负责将不同的 .NET 编程语言语法规则和法规转换为 CLR 可理解的格式。基本上,它提供了语言互操作性。语言互操作性意味着在 .NET 框架中也为其他编程语言提供执行支持。

语言互操作性可以通过两种方式实现:

托管代码:由 CLR 管理的 MSIL 代码称为托管代码。对于托管代码。

非托管代码:在 .NET 开发之前,like.COM Components 和 Win32 API 的编程语言不会生成 MSIL 代码。因此,这些不是由 CLR 管理,而是由操作系统管理。

IL:中间语言(中间代码)是一种面向语法,易于翻译成目标程序的源程序的等效内部表示代码,IL是基于栈的,微软提供ilasm.exe的il汇编器和一个名为ildasm.exe的il反汇编器。

通用类型系统 (CTS)

每种编程语言都有自己的数据类型系统,因此CTS负责了解.NET编程语言的所有数据类型系统,并将它们转换为CLR可理解的格式,这将是一种通用格式。

每种 .NET 编程语言都有 2 种类型的 CTS:

值类型:值类型将值直接存储到内存位置。这些类型仅适用于堆栈机制。CLR 在编译时允许这些内存。

引用类型:引用类型将包含值的内存地址,因为引用类型不会将变量值直接存储在内存中。这些类型与堆机制一起使用。CLR 在运行时为这些分配内存。

垃圾收集器:它用于提供自动内存管理功能。如果没有垃圾收集器,程序员将不得不编写内存管理代码,这对程序员来说是一种开销。

JIT(即时编译器):它负责使用公共语言运行时环境将 CIL(公共中间语言)转换为机器代码或本机代码。

Windows机制:Windows 是一个事件驱动的操作系统。事件驱动围绕着消息的产生与处

理展开,事件驱动消息会进入系统消息队列中并靠消息循环机制来处理和实现。

的通知,消息是Windows 操作系统的灵魂。

参考:

https://mp.weixin.qq.com/s?__biz=MzI0MTU0ODQwMQ==&mid=2247485894&idx=1&sn=8ee1e0d049f6c00f9523e14397e36a40&chksm=e908a4d8de7f2dcedcda1aa8f7ace43c471fca195ffcc44a97e6d60ce4b1a8c398de56857e4d&scene=27

https://www.cnblogs.com/jimcsharp/p/4369141.html


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

相关文章:

  • arcgis的合并、相交、融合、裁剪、联合、标识操作的区别和使用
  • SpringCloud系列教程:微服务的未来(十)服务调用、注册中心原理、Nacos注册中心
  • 和为0的四元组-蛮力枚举(C语言实现)
  • 计算机网络之---TCP/IP四层模型
  • 回顾2024年重磅AI发布汇总
  • 大数据架构设计:数据分层治理的全景指南
  • CSDN周赛第37期题解(Python版)
  • 近期投简历、找日常实习的一些碎碎念(大二---测试岗)
  • uboot主目录下Makefile文件的分析,以及配置过程分析
  • 【动态规划】最长上升子序列(单调队列、贪心优化)
  • 指针进阶(上)
  • 《世界棒球》:黑人联盟
  • Linux安装EMQX(简洁版)
  • 【C语言】一篇让你彻底吃透(结构体与结构体位段)
  • 【python】喜欢XJJ?这不得来一波大采集?
  • ubuntu中创建虚拟环境,以及在虚拟环境中安装环境,并运行项目
  • 蓝桥杯冲击-02约数篇(必考)
  • 22讲MySQL有哪些“饮鸩止渴”提高性能的方法
  • Python学习(2)-NumPy矩阵与通用函数
  • 什么是Vue
  • 安卓笔记-加油-奥利给!
  • 蚂蚁一面面试经历
  • 线性筛素数
  • Vue全新一代状态管理库 Pinia【一篇通】
  • (数据结构)堆
  • Linux:C语言实现面向接口编程