MSIL入门(一)C#代码与IL代码对比
基础概念 Microsoft中间语言(MSIL),也成为通用中间语言(CIL),是一组与平台无关的指令,由特定于语言的编译器从源代码生成。MSIL是独立于平台的,因此,他可以在任何公共语言基础架构支持特定的环境上执行。 通过JIT编译器将MSIL转换为特定计算机环境的特定机器代码。这是在执行MSIL ...
《框架设计 CLR Via C# (第2版)》 - 学习笔记
《框架设计 CLR Via C#》 (第2版) [作者] (美) Jeffrey Richter[译者] (中) 周靖 张杰良[出版] 清华大学出版社[版次] 2006年11月 第1版[印次] 2007年02月 第2次 印刷[定价] 68.00元 【前言】 Microsoft .NET Framew ...
CLRCore(CLR核心机制)
JIT--第一次--标记已--存根--调用--查找存根--执行机器码 C#和CIL的关系: C#和N#都是CIL实现,但是彼此不能互通: C#和N#公开不分满足规范,我们才能互通 CLS就是描述多语言互通的规范 内存分配:线程栈 堆Heap: 一个程序运行时,该进程存放引用类型变量的一块内存,全局唯 ...
【随笔】CLR:向头对象(Object Header)迈进一大步!!!
前言 在我之前一篇随笔里(戳我),我们知道,一个引用类型的对象,包含了2个额外的开销,一个是头对象(object header),一个是MT。我们接下来看看头对象到底有多神秘。。。 Object Header中的布局 头对象共32位,每一位都有不同的用途 相关资料可参见: https://mycod ...
静态页面开发JS页面跳转加密解密URL和参数
页面跳转加密URL地址参数传递 window.location.href="foot.html?"+"good="+encodeURI(encodeURI(goodid)); 页面跳转解密 URL参数 ...
基础类型
WinDbg探究CLR底层(1) - 应用程序域
一、什么是应用程序域 操作系统由于其稳定性与可靠性的要求,都会使用隔离层,来确保运行在某个隔离层内的代码不会对其他隔扇层的代码产生影响。如Windows通过进程来实现这种隔离机制,所能的可执行代码、数据、以及其它资源都被包含在进程中,系统其他进程通常不允许对它们进行访问。同理、.NET应用程序同样也 ...
MSIL指令集
名称说明Add将两个值相加并将结果推送到计算堆栈上。Add.Ovf将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。Add.Ovf.Un将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。And计算两个值的按位“与”并将结果推送到计算堆栈上。Arglist返回指向当前方法的参数... ...
谈谈JIT编译器和本机影像生成器(NGen.exe)
前言 在看《CLR》的时候,作者在开篇的时候提到了NGen.exe,前面一节执行程序集的代码中提到:程序或方法执行前会执行MSCorEE.dll中的JIT函数把要执行方法的IL转换成本地的CPU指令,讲代码放在内存块中,第二次调用方法的时候,由于已对方法进行了验证和编译,所以会直接执行内存块中的代码... ...
线程池ThreadPool知识碎片和使用经验速记
ThreadPool(线程池)大概的工作原理是,初始时线程池中创建了一些线程,当应用程序需要使用线程池中的线程进行工作,线程池将会分配一个线程,之后到来的请求,线程池都会尽量使用池中已有的这个线程进行响应,如果请求过多的话,线程池将会按照策略等待或者创建新的线程进行响应直到达到上限。当线程池中的线程... ...
[精华]正则表达式30分钟入门教程(转)
前言 今天做东西的时候碰到个正则表达式的需求,以前做数据验证的时候因为都是一些通用的东西,比如号码验证、邮箱验证等,这些网上都可以找到,但是今天遇到的是比较特别的,如下:数字0-9和小数点、字母w、小于号和小于等于号、大于号和大于等于号、加减乘除+-*/,括号()。比如“1111≥≤]*|[\.]*... ...
.NET 类库研究必备参考 添加微软企业库源码
前不久,为大家提供了一个.NET 类库参考源码的网站,扣丁格鲁(谐音“coding guru”),使用了段时间,发现一些不方便的地方,特意做了一些更改,希望大家多提意见,下面是此次更改的地方。 ...
C#在.NET编译执行过程
1..NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。程序集要么是可执行的,要么是DLL程序集里的代码并不是本机代码,而是一种名称为CIL的中间语言程序集包含如下信息:程序的CIL程序中使用的类型的元数据对其他程序集引用的元数据2. 程序的编译过程 程序的CIL直到它被调用运行时才会被... ...
JITCompiler、NGen.exe及.NET Native
一、JITCompiler如你所知,JIT(just-in-time或“即时”)编译器是CLR的重要组件,它的职责是将IL转换成本地cpu指令。>一书中在CLR的执行模型章节里有一副图形象介绍了一个方法(WriteLine)首次调用时发生的事情:JITCompiler函数被调用时,它知道要调用的是哪... ...