.NET 程序运行原理


Overview of the Common Language Infrastructure”,作者Jarkko Piiroinen - 自己的作品。采用Public domain授权,来自维基共享资源

右图即为运行图。
最上层即为各种语言,然后经过对应的编译器编译成程序集,也就是 CIL 通用中间语言
最后,再由 CLR 公共语言运行时 编译成机器码

CLI 一个规范

.NET 程序运行原理

时间: 2024-11-09 02:18:28

.NET 程序运行原理的相关文章

Windows程序设计笔记1:第2章:win32程序运行原理

第2章:win32程序运行原理 内核对象:对象句柄,标示符,进程相关的,只能被1个进程里面的其他线程访问,不透明的,封装过的. 创建进程:返回STARTUPINFO类型的变量对象,包含了父进程传递给子进程的显示信息,   STARTUPINFO是一种类类型,和内含的类型是一样的, STARTUPINFO si={sizeof(&si)}; //初始化startupinfo的大小 ::GetStartupinfo(&si); //调用startupinfo对象 创建进程:CreateProc

Windows程序运行原理

Windows程序运行原理 1.应用程序,操作系统,硬件之间的关系 这里涉及到消息及消息队列, 操作系统是通过消息机制(Message)来将感知到的事件传递给应用程序的. 操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序. 操作系统对事件做出反应的过程就叫做消息响应 typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt

java程序运行原理

一.JRE.JDK.JVM 要了解java程序运行原理,首先需要了解知道jre.jdk.jvm这三者是什么,他们之间又有什么联系. JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台.所有的Java 程序都要在JRE下才能运行. JDK(Java Development Kit,java开发工具包)是程序开发者用来来编译.调试java程序用的开发工具包.JDK的工具也是Java程序,也需要JRE才能运行.为了保持JDK的独立性和完整性,在JDK的安装过程

QF——iOS程序运行原理

iOS程序的运行原理: 1> main.m 主函数是所有程序的入口函数. 2> 在main函数里是UIApplicationMain函数,开启了一个无限循环,以监听该应用. 该UIApplicationMain函数有4个参数,前两个分别是main函数的参数,第3个参数UIApplication的类名,第4个是应用的代理类名. 2.1> 创建一个UIApplication实例,单例的,一个应用对应一个该对象,代表整个应用程序. 2.2> 再创建一个UIApplication的dele

第二章--Win32程序运行原理 (部分概念及代码讲解)

学习<Windows程序设计>记录 概念贴士: 1. 每个进程都有赋予它自己的私有地址空间.当进程内的线程运行时,该线程仅仅能够访问属于它的进程的内存,而属于其他进程的内存被屏蔽了起来,不能被该线程访问. PS:进程A在其地址空间的0x12345678地址处能够有一个数据结构,而进程B能够在其地址空间的0x12345678处存储一个完全不同的数据.彼此不能访问. 2. 在大多数系统中,Windows将地址空间的一半(4GB的前一半,0x00000000-0x7FFFFFFF)留给进程作为私有存

逆向第三课(深入.NET程序运行原理)

注:本文适用读者范围,对Windows下的PE文件有一定认识的朋友 一. 名词解释 a)        CLR: 公共语言运行时(Common LanguageRuntime),CLR时.NET框架的核心内容之一,可以把它看为一套标准资源,可以被任何.NET程序使用.它包括:面向对象的编程模型.安全模型.类型系统(CTS).所有.NET基类.程序执行以及代码管理等. b)        JIT: 即时编译(Just In-Time compile),这是.NET运行可执行程序的基本方式,也就是在

Java程序运行原理分析

class文件内容 class文件包含Java程序执行的字节码 数据严格按照格式紧凑排列在class文件的二进制流,中间无分割符 文件开头有一个0xcafebabe(16进制)特殊的标志 JVM运行时数据区 线程独占: 每个线程都会有它独立的空间,随线程的生命周而创建和销毁 线程共享: 所有线程都能访问这块内存数据,随虚拟机或GC而创建和销毁 方法区 方法区是各个线程共享的内存区域 用于存储已被虚拟机加载的类信息, 常量,静态变量, 即时编译后的代码等数据 虽然Java虚拟机规范把方法区描述为堆

孙鑫MFC学习笔记1:Win32程序运行原理

1.MSG结构 hwnd:窗口句柄 message:消息类型 wParam & lParam:消息的附加信息(比如键值) time:消息被投递的时间 tip:typedef的作用是从变量类型区分变量用途 2.WinMain 3.程序开发步骤 4.设计窗口类 5.创建窗口.显示窗口.更新窗口 6.回调函数 tip:BeginPaint.EndPaint只能在响应WM_PAINT消息中使用,而GetDC不能在这里使用 tip:if语句中如果是常量与变量比较是否相等,应该把常量写在左边(可以避免把==

Ubuntu下c程序运行原理

运行环境: 1.Vitural box下安装Ubuntu虚拟机 2.编译运行工具:gcc 3.编辑器:vim 主要过程: 1.利用vim编辑hello.c 2.编译和执行 (1)预处理阶段:使用 -E命令,得到编译文件: -o将预处理的输出存储到文件 (2)编译阶段:使用-S 命令将预处理文件编译为汇编语言文件,生成文件默认为.s的后缀:-o可以指定产生的汇编文件的名字 (3)汇编阶段:使用-c命令,将汇编文件编译成可重定向的目标文件,(二进制形式,后缀为.o) 也可以结合-o命令产生指定名称的