C#~代码执行过程第一步:编译

记录一下C#代码的编译:

C#编译器把源代码编译成托管模块;

托管模块是可移植执行体文件,可移植执行体文件也叫PE文件;

托管模块中有什么:

1、PE头:标识文件类型,标识文件生成时间;

2、CLR头:CLR版本,托管模块入口main方法的信息;

3、元数据:描述源代码中定义的类型和成员,描述源代码引用的类型和成员;

4、IL代码:IL是中间语言的缩写,编译器编译源代码时生成的,CLR会把IL编译成CPU指令的。

原文地址:https://www.cnblogs.com/bigbosscyb/p/12154430.html

时间: 2024-10-16 01:47:47

C#~代码执行过程第一步:编译的相关文章

Linux下C语言执行过程(预处理,编译,汇编,链接,执行)

1.C语言的执行过程包括5个步骤:分别是:预处理,编译,汇编,链接,执行 第一步:编写C源代码,截图如下: 2.预处理,命令为:gcc -E variable.c -o variable.i(这步的作用是文件的展开和宏替换),生成的文件类型是.i类型的. 3.编译:命令为:gcc -S variable.i -o variable.s,这里的.s文件就成了会变语言,截图如下: 4.汇编,命令是:gcc -c variable.s -o variable.o,截图如下: 5,链接:命令:gcc -

Javascript代码执行过程-《悟透Javascript》笔记

本文摘录自李战老师<悟透Javascript>一书的部分章节,为适应博客发表作了一点点修改. 1) 预编译分析. JavaScript执行引擎将所有定义式函数直接创建为作用域上的函数变量,并将其值初始化为定义的函数代码逻辑,也就是为其建立了可调用的函数变量. “var”定义的变量也会在这一步中创建起来,初始值为undefined. 2) 开始解释执行代码. JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的.而且,在同一段程序的分析执行中,定义式的函数语句会被

Java异常处理机制就是程序代码执行过程

我也是通过各种方式在进行验证是否可以满足我们的需求,今天我就发现了一个问题.现在我们来一起说明一下,这个可能不算是bug,而应该需要我们记住就可以了. 对于一副灰度图像I,她的每一个像素点I(x,y)都有一个灰度值,一般情况下可能的灰度取值有2^8=256个(0,1,...,255).如果我们统计出灰度值r在I中出现的次数n,并对其进行归一化(n/N,N是所有灰度值出现次数的总和),这样我们就可以得到像素r在I中出现的概率p(r).如果对每一个可能的灰度取值r都做同样的处理,我们可以得到如图1左

反编译C程序为汇编代码,汇编代码执行过程的分析与思考

张韩+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 系统:32位Ubuntu14.04 编写C程序:(保存至main.c) int g(int x) {   return x + 3; } int f(int x) {   return g(x); } int main(void) {   return f(8) + 1; } 控制台反编译命令: 得到main.s,其内容如下:

Java代码执行过程概述

Java代码经历三个阶段:源代码阶段(Source) -> 类加载阶段(ClassLoader) -> 运行时阶段(Runtime) 首先我们来理清一下Java代码整个执行过程, 让我们对其有个整体的认识: Java源程序(.java)经过Java编译器(javac)以后, 生成一个或多个字节码(.class)文件, JVM将每一条要执行的字节码通过类加载器ClassLoader加载进内存, 再通过字节码校验器的校验, Java解释器翻译成对应的机器码,  最后在操作系统解释运行. 当程序要使

用C语言写一个Helloworld_实现第一步编译运行

编写第一个hello world 创建helloworld.c // 程序头文件 #include <stdio.h> // 主入口函数 int main(int arc, char* argv[]) { printf("Hello World!\n"); return 0; } 编译自己的第一个程序 Mac os clang -g -o hellword helloword.c -g: 是输出调试信息 -o: 是输出可执行程序 hellword: 最终生成的文件名称 he

C#~代码执行过程第二步:生成程序集

编译器会通过CSC.exe工具将生成的托管模块连带资源文件合并成程序集. 这个工具完成操作后会生成一个PE32+文件,该文件中包含了一个叫清单的数据块-清单英文为Manifest. 清单包含了丰富的信息: 1.构成程序集的文件: 2.程序集中文件所实现的public类型: 3.与程序集相关的资源文件和数据文件. 此外,在程序集的模块中还包含了与引用的程序集有关的信息,这些信息描述了被引用的程序集的版本等信息. 原文地址:https://www.cnblogs.com/bigbosscyb/p/1

第一章 Java代码执行流程

说明:本文主要参考自<分布式Java应用:基础与实践> 1.Java代码执行流程 第一步:*.java-->*.class(编译期) 第二步:从*.class文件将其中的内容加载到内存(类加载)(运行期) 第三步:执行代码(运行期) 2.代码编译 javac命令将源码文件编译为*.class文件. 后边将介绍: javac将*.java编译成*.class文件的过程 class文件的文件格式,以及其存储的内容 3.类加载 主要是指将*.class文件加载到JVM,并形成Class对象的机

C程序编译执行过程

C程序编译执行过程 认识C编译执行过程,是C学习的开端. 简单说C语言从编码编译到执行要经历一下过程: C源代码 编译---->形成目标代码,目标代码是在目标机器上运行的代码. 连接---->将目标代码与C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序). 执行----->在特定的机器环境下运行C程序. 如果用一个图 来表示: 以上过程仅仅是个大概,详细的过程相当复杂,下面这篇文章写得很详细,从中受益很多: 原文来自:http://www.vc