一 前言 IL系列 第一篇写完后 得到高人指点,及时更正了文章中的错误,也使得我写这篇文章时更加谨慎,自己在了解相关知识点时,也更为细致.个人觉得既然做为文章写出来,就一定要保证比较高的质量,和正确率 .感谢 @冰麟轻武 的指点 你没有看第一篇?  点这里看第一篇 读懂IL代码就这么简单(一) IL指令大全 :IL指令详解 IL反编译工具: ILDasm 知识点回顾: Managed Heap(托管堆):用于存放引用类型的值 Evaluation Statck(计算栈):临时存放值类型数据,引用…
一 前言 IL系列 第一篇写完后 得到高人指点,及时更正了文章中的错误,也使得我写这篇文章时更加谨慎,自己在了解相关知识点时,也更为细致.个人觉得既然做为文章写出来,就一定要保证比较高的质量,和正确率 .感谢 @冰麟轻武 的指点 你没有看第一篇?  点这里看第一篇 读懂IL代码就这么简单(一) IL指令大全 :IL指令详解 IL反编译工具: ILDasm 知识点回顾: Managed Heap(托管堆):用于存放引用类型的值 Evaluation Statck(计算栈):临时存放值类型数据,引用…
一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认为,重要的地方都差不多写到了,最后一篇决定把之前的内容全部整合起做一个综合的例子,然后简单的解释下IL指令的含义,及在内存中的变化如果你没有看前两篇请狂点这里 读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) IL指令大全 :IL指令详解 IL反编译工具: ILDasm 注:因本人水平有限…
一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍 这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认为,重要的地方都差不多 写到了, 最后一篇决定把之前的内容全部整合起做一个综合的例子,然后简单的解释下IL指令的含义,及在内存中的变化 如果你没有看前两篇请狂点这里 读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) IL指令大全 :IL指令详解 IL反编译工具: ILDasm 注:因本人…
读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) 读懂IL代码就这么简单(三)完结篇 出处:http://www.cnblogs.com/zery/tag/IL%20%E7%B3%BB%E5%88%97/…
一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉厉. 然后开始接触IL,了解了一段时后才发现原来读懂IL代码并不难.进入正题 1.1  什么是IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执…
一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉厉. 然后开始接触IL,了解了一段时后才发现原来读懂IL代码并不难.进入正题  1.1  什么是IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接…
原文地址:http://www.cnblogs.com/zery/p/3366175.html 一前言 感谢 @冰麟轻武 指出文章的错误之处,现已更正 对于IL代码没了解之前总感觉很神奇,初一看完全不知所云,只听高手们说,了解IL代码你能更加清楚的知道你的代码是如何运行相互调用的,此言一出不明觉厉. 然后开始接触IL,了解了一段时后才发现原来读懂IL代码并不难.进入正题  1.1  什么是IL IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供…
以前刚开始学C#的时候,总有高手跟我说,去了解一下IL代码吧,看懂了你能更加清楚的知道你写出来的代码是如何运行互相调用的,可是那时候没去看,后来补的,其实感觉也不晚.刚开始看IL代码的时候,感觉非常吃力,一大堆不懂,后来,慢慢看,最后也能看得懂一丁点啦. 闲话不多说了,下面就开始讲讲IL代码 1.什么是IL代码 IL,也称为CIL,MSIL,是.NET框架中中间语言(Intermediate Language)的缩写.上一篇文章已经说过了,Visual Studio继承的C#编译器可以直接把C#…
这一篇是IL系列的最后一篇的,主要是要说一下IL中的流程控制.我相信,经过前面三篇的介绍,看IL代码应该不是什么大问题了吧.好吧,闲话不多说了,就来简单的说一下吧. 还是跟前几篇一样,以例子来解释说明. 转换为IL代码如下: 大家是否看到了上图中我画的红色框框,这个就是流程控制的关键,下面我最后一次一句一句去解释,希望大家能够自己去尝试一下,看一下. .method private hidebysig static void Main(string[] args)cilmanaged { .en…
由于要写毕业论文的缘故,最近比较没有时间写,总是要抽出时间抽出时间.诶,这样的生活比较烦躁. 这一篇主要写委托.类.方法的IL代码,一一来说明. 委托:搞过C#的都应该清楚,委托实际上是一个类.编译器会把它编译成一个类,继承自MulticastDelegate的类,里面有三个方法,BeginInvoke,EndInvoke和Invoke,当我们使用委托方法名进行调用方法时,编译器内部实际上是调用了Invoke方法(语法糖). 以下就用简单的代码来掩饰一下委托的IL代码 先来看看编译器把委托编译成…
上一篇提到了最基本的IL代码,应该是比较通俗易懂的,所以有了上一篇的基础之后,这篇便要深入一点点的来讲述了. 首先我必须再来说一些重要的概念: Evaluation Stack(评估栈):这是由.NET CLR在执行时候自动管理的记忆体,每一个线程都有自己的评估栈,也就是说,它是用来存储临时变量的线程栈(应该可以这么理解).值类型存储数据,引用类型存储地址. Call Stack(调用栈):这也是由.NET CLR在执行时候自动管理的记忆体,每一个线程都有自己的调用栈,每一次调用method,就…
读懂IL 先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.最重要的理由就是一个:当面试官看你简历上写着精通C#时,问你一句: "懂不懂IL?" 怎么回答? "不好意思,那东西没什么卵用,所以我没学." 还是 "还行,可以探讨一下." 你觉得哪个回答好呢,答得好才更有底气要到更多的薪资,多个几千块也说不定,而这只不过花…
轻松读懂IL先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.最重要的理由就是一个:当面试官看你简历上写着精通C#时,问你一句: "懂不懂IL?" 怎么回答? "不好意思,那东西没什么卵用,所以我没学." 还是 "还行,可以探讨一下." 你觉得哪个回答好呢,答得好才更有底气要到更多的薪资,多个几千块也说不定,而这只不过…
一.前言 首先,想说说为什么要写这样系列的文章,有时候在和同事朋友聊天的时候,经常会听到这样的话题: (1)在这家公司没什么长进,代码太烂,学不到东西.(你有没有想想框架为什么这样写,代码还可以怎么去优化,比如公司使用Dapper,源码研究过没以及这样封装原因是啥) (2)现在只会Ctrl + C  Ctrl +V  ,不排除有时为了效率,包括我自己有时候也懒的写直接复制粘贴  (是不是感觉距离语言的本质越来越远了) (3)Ctrl + C  Ctrl +V 时间长了,都有点怀疑自己是否有勇气面…
先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.其实IL本身逻辑很清楚,主要是把指令的意思搞明白就好办了.记指令只要记住几个规律就好,我把它们分为三类. 第一类 :直观型 这一类的特点是一看名字就知道是干嘛的,不需要多讲,如下: 名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Sub 从其他值中减去一个值并将结果推送到计算堆栈上. Div 将两个值相除并…
先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.最重要的理由就是一个:当面试官看你简历上写着精通C#时,问你一句: "懂不懂IL?" 怎么回答? "不好意思,那东西没什么卵用,所以我没学." 还是 "还行,可以探讨一下." 你觉得哪个回答好呢,答得好才更有底气要到更多的薪资,多个几千块也说不定,而这只不过花上不到半小…
引言 转自园子里的一片关于IL的好文,分享的同时,方便自己今后查阅. 原文链接:http://www.cnblogs.com/brookshi/p/5225801.html ------ 略过作者调侃内容,直接进入干活部分! 将IL用法分为三类,如下. 第一类 :直观型 这一类的特点是一看名字就知道是干嘛的,不需要多讲,如下: 名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Sub 从其他值中减去一个值并将结果推送到计算堆栈上. Div 将两个值相除并将结果作为浮点(F 类型)或商(…
代码不要忙着细读.要粗,找到大体的脉络. 要改.根据自己的设想,大胆去改,改了之后就运行,看看是否有预想的效果.动手才能有收获. 找简单的任务赶快做起来.上司没有布置任务,就自己给自己布置. 不要偏执,做不出来的事情不要硬撑,要及时放弃,或者求教. 了解全局的时候,关注执行流程.层次.调用之类的,对细节不求甚解,看不懂的,底层的,跳过就是. 读细节的时候,就只读系统内自己关注的某个点,甚至某个具体的方法或者函数,一行一行慢慢啃. 读代码和写代码一样,你得先明确目标.漫无目的的读代码是不会有结果的…
目录 Java中的构造方法 构造方法简介 构造方法实例 例 1 例 2 Java中的几种构造方法详解 普通构造方法 默认构造方法 重载构造方法 java子类构造方法调用父类构造方法 Java中的代码块简介 Java代码块使用 局部代码块 构造代码块 静态代码块 Java代码块.构造方法(包含继承关系)的执行顺序 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github…
http://www.cnblogs.com/richieyang/p/4840614.html…
读懂IL代码就这么简单(三)完结篇   一 前言 写了两篇关于IL指令相关的文章,分别把值类型与引用类型在 堆与栈上的操作区别详细的写了一遍这第三篇也是最后一篇,之所以到第三篇就结束了,是因为以我现在的层次,能理解到的都写完了,而且个人认为,重要的地方都差不多写到了,最后一篇决定把之前的内容全部整合起做一个综合的例子,然后简单的解释下IL指令的含义,及在内存中的变化如果你没有看前两篇请狂点这里 读懂IL代码就这么简单 (一) 读懂IL代码就这么简单(二) IL指令大全 :IL指令详解 IL反编译…
如何解读IL代码 关于IL代码,我有将从三个方面去揭开它神秘的面纱.IL代码是什么?我们为什么要去读懂IL代码?我们如何去读懂IL代码?这三个问题的解答,将是我解读IL代码的整体思路. IL代码是什么?IL(Intermediate Language),它也称为CIL或者MSIL,翻译成中文就是“中间语言”.C#的JIT编译器可以将C#源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的二进制代码,而是传说中的IL代码.因此,.exe或者.dll文件都可以被VS安…
[No0000152]C#基础之IL,轻松读懂IL   先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.其实IL本身逻辑很清楚,主要是把指令的意思搞明白就好办了.记指令只要记住几个规律就好,我把它们分为三类. 第一类 :直观型 这一类的特点是一看名字就知道是干嘛的,不需要多讲,如下: 名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Sub 从其他值中减去…
一.前言 IL是什么? Intermediate Language (IL)微软中间语言 C#代码编译过程? C#源代码通过LC转为IL代码,IL主要包含一些元数据和中间语言指令: JIT编译器把IL代码转为机器识别的机器代码.如下图 语言编译器:无论是VB code还是C# code都会被Language Compiler转换为MSIL MSIL的作用:MSIL包含一些元数据和中间语言指令 JIT编译器的作用:根据系统环境将MSIL中间语言指令转换为机器码 为什么ASP.NET网站第一次运行时…
·IL代码分析方法 ·IL命令解析 ·.NET学习方法论 1.引言 自从『你必须知道.NET』系列开篇以来,受到大家很多的关注和支持,给予了anytao巨大的鼓励和动力.俱往昔,我发现很多的园友都把目光和焦点注意在如何理解IL代码这个问题上.对我来说,这真是个莫大的好消息,因为很明显我们的思路慢慢的从应用向底层发生着转变,技巧性的东西是一个方面的积累,底层的探索在我认为也是必不可少的修炼.如果我们选择了来关注这项修炼,那么我们就应该选择如何来着手这项修炼,首先关注anytao的『你必须知道的.N…
浅析.NET IL代码   一.前言 IL是什么? Intermediate Language (IL)微软中间语言 C#代码编译过程? C#源代码通过LC转为IL代码,IL主要包含一些元数据和中间语言指令: JIT编译器把IL代码转为机器识别的机器代码.如下图 语言编译器:无论是VB code还是C# code都会被Language Compiler转换为MSIL MSIL的作用:MSIL包含一些元数据和中间语言指令 JIT编译器的作用:根据系统环境将MSIL中间语言指令转换为机器码 为什么A…
本文主要介绍IL代码,内容大部分来自网上,进行整理合并的. 一.IL简介 为什么要了解IL代码? 如果想学好.NET,IL是必须的基础,IL代码是.NET运行的基础,当我们对运行结果有异议的时候,可以通过IL代码透过表面看本质:IL也是更好理解.认识CLR的基础:大量的实例分析是以IL为基础的,所以了解IL,是读懂他人代码的必备基础,同时自己也可以获得潜移默化的提高: 什么是IL?  IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可…
字节码(英语:Bytecode)将虚拟机可以读懂的代码称之为字节码.将源码编译成虚拟机读的懂的代码,需要虚拟机转译后才能成为机器代码的中间代码 叫做字节码. 字节码主要为了实现特定软件运行和软件环境.与硬件环境无关.字节码的实现方式是通过编译器和虚拟机.编译器将源码编译成字节码,特定平台上的虚拟机将字节码转译为可以直接执行的指令.字节码的典型应用为在.net中也叫做IL中间语言. 作用:解决穿透解释性语言的低效问题. 编程语言与字节码 编译型语言需要通过编译器,将源代码编译成机器码之后才能执行的…
一步步教你读懂NET中IL(附带图) 接触NET也有1年左右的时间了,NET的内部实现对我产生了很大的吸引力,在msdn上找到一篇关于NET的IL代码的图解说明,写的挺不错的.个人觉得:能对这些底部的实现进行了解和熟练的话,对以后自己写代码是有很大帮助的,好了,废话不多说,现摘抄如下: .NET CLR 和 Java VM 都是堆叠式虚拟机器(Stack-Based VM),也就是說,它們的指令集(Instruction Set)都是採用堆叠运算的方式:执行时的资料都是先放在堆叠中,再进行运算.…