.Net程序编译运行过程

托管代码与非托管代码

1.非托管代码

非托管代码程序必须依赖于操作系统,经编译器生成的程序文件是只适用于特定CPU架构的指令。

缺点:不同操作系统,需要单独编写代码,重复且低效。

2.托管代码

最早Java跨平台设计思想,.NET从03年开始。不依赖于特定操作系统和CPU架构

通过将语言本身转换为一种跨平台的指令,这种指令Java中被称作ByteCode(字节码),.NET中称作MSIL指令(微软中间语言)。

.NET的MSIL运行于CLR(Common Language  Runtime),通用语言运行时,实际上是一个虚拟机。Java的ByteCode行于JIT。

3.IL Dasm

IL Dasm可以查看MSIL 中间语言。

原文地址:https://www.cnblogs.com/NETer-P/p/12153454.html

时间: 2024-07-31 13:26:41

.Net程序编译运行过程的相关文章

黑马程序员----整个程序的运行过程

程序的运行过程: 1.编写代码: 2.编译:把C语言代码翻译成0和1 *工具:clang编译器,(Xcode 3 gcc Xcode 4 llvm clang) *指令:cc -c 文件名.c *编译成功会自动生成一个.o目标文件 3.连接:把我们的.o目标文件和系统自带的函数库合并在一起,生成一个可执行文件 *指令:cc 文件名.o *链接成功后会自动生成一个.out可执行文件 4.运行 *指令:./a.out(./代表在当前文件夹下,a.out为生成的可执行文件) 注意: 1.cc 文件名.

C程序编译执行过程

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

程序在运行过程中变量的保存位置与生命周期

本例说明了一个程序在运行的时候,各种变量所保存的位置.因为位置不同,自然,变量的生命周期也各不相同. 代码示例: #include <iostream> using namespace std; int nGNum1; void showStackAddress(){    cout<<"address of showStackAddress() is:\t["<<(void*)&showStackAddress<<"]

Java程序的运行过程

Java程序的运行过程 java的两种核心机制:java 虚拟机 (java Virtual Machine) 垃圾回收机制:Garbagr collection java程序的运行过程 *.java源程序 -->java编译器 -->.class 字节码文件 --> 类装载器 -->字节码校验器  -->解释器 -->操作系统平台 核心机制之java虚拟机:(JVM) java虚拟机可以理解为一个以字节码为机器指令的CPU 对于不同的运行平台,有不同的虚拟机 java

Darwin Streaming Server用vs2005编译运行过程

原创. 一:编译 Darwin6.0.3版本是最新版本,也提供了.dsw文件.但是使用vs2005和vc6是编译不过的.所以,采用Darwin5.5.5版本.使用vc6打开WinNTSupport文件夹下的.dsw工程,直接batch build,可一步生成. 使用vc编译速度快,但是调试和看代码不如2005方便.下面主要是使用vs2005编译的问题. 转换vs2005的sln后,提示没有StreamingloadingTool这个工程,不用管,因为服务器不依赖于该工程. (1)    提示:w

C++IO小程序附带运行过程 & get()函数解析

     int ch,count=0; ch=cin.get(); while(ch!=EOF) { cout.put(ch); ++count; ch=cin.get(); } cout<<count; cin.get(ch)与cin.get() 属性 cin.get(ch) ch=cin.get() 传递输入字符的方式 赋给参数ch 将函数返回值赋给ch 用于字符输入时函数的返回值 istream对象(执行布尔转换后为true) int类型的字符编码 到达EOF时函数的返回值 istre

C/C++程序编译运行过程分析(转载)

为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母.符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言.然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序.因为汇编指令和机器语言之间有着一一对应的关系,这可比英译汉或汉译英简单多

从内存中分析程序的运行过程

我觉得图形是最可以直观一种解释方法,所以先把程序运行过程的图形解析流程给大家,通过图形来一步一步的理解才是最让人清楚,直观的: 流程图懂了,好多事情也就懂了!

linux中codeblocks程序编译运行后不出现控制台窗口

系统: CentOS 6.4 CodeBlocks 13.12 64bit 现象: 在codeblocks中新建了一个控制台程序,是最简单的“Hello,world”,但是程序编译后,点击运行按钮时不出现控制台窗口,但是在linux终端下,跳转到程序目录,就可以执行编译的程序. 错误:process terminated with status 255 解决: yum install xterm