.Net 2.0内存对象布局详析及与1.1变化比较
写本文主要两个目的,一个是解析下2.0下的对象在内存里面究尽是个什么样子的布局,使用windbg和sos来show下内存里面的bit是如何组织其来的。另外一个就是比较下和.Net Framework 1.1你面的内存布局有什么区别,修正下“Drill Into .NET Framework Inte...
[Programming IL]泛型, Generic Types
引言: 自从泛型那天诞生起,广大的面向对象程序员对于他的热爱普遍要高于其他数据结构. :). 然而各大面向对象对于他的支持却不太一样。在CPP中用的是静态编译,即在编译器决定泛型的类型,而.Net则是在运行时确定,他们有什么不一样呢? 和周围的同事谈起泛型,发现大伙对于这东西都是似懂非懂,觉得自己有...
Shared Source CLI 2.0 Internals Draft Released
Essential Shared Source CLI 的第二版的电子草稿版本出来了,想学习的朋友有福了,下面是地址 查看: http://callvirt.net/blog/entry.aspx?entryid=b9a94d0c-761a-4d6b-bc2f-d6a5f8c1a4a7 书籍下载地址...
[Programming IL]虚方法,重载,抽象方法,覆盖 - Virtual Methods, Overload, Abstract, Override
引言 前面我们讲到了接口,类,流程控制,那面向对象的一些基本概念,重载,覆盖,抽象/虚方法这些概念在.Net中又是如何实现的呢? 概念 可能提了无数次了,然后还是要定义一下, 温故而知新嘛. :) 这些面向对象的基本元素都是和方法联系在一起。方法由方法头(Method Header)和方法体(Met...
[Programming IL]创建一个接口,How To Declare A Interface
引言: 大家都知道接口是定义了一组契约,但是你知道接口的存在形式吗? 你想更深一步了解接口吗? Follow me. :) 概念: Interfaces define a contract that other types can implement. Interfaces can have sta...
[Programming IL]创建一个类,How To Declare A Class
引言 在.Net平台中,面向对象是一个非常重要的概念,那么在IL是怎样对面向对象进行支持的呢? 让我们从创建一个类开始 例子 1: .assembly extern mscorlib {} 2: .assembly MyClass {} 3: .class public auto unicode X...
[Programming IL] 从Hello World开始
名词解释 IL = Intermediate Language, 在.Net的设计中成为CIL = Common Intermediate Language, 而因为CIL本身是通用的,而微软为他设计了一种实现,在微软平台上我们也可以称他为MSIL 目标 为.Net平台的底层设计提供一个具体实现,基...
推荐:All about .NET
—-.NET ResourcesA paper on resources and how they can be extracted from assemblies—.NET PEfile structure a simple illustration for .NET PE File struct...
Understanding Struct, 理解Struct
在.Net 中各种基本类型都是由struct定义,他与引用类型相有一些不同,有自己的特色,这篇BLOG由ECMA335中关于Value Type的定义开始 用Class定义的类型不一定都是引用类型,实际上,值类型就不是(例如:ValueType).用Class定义的ValueType包含了拆箱的值类...
Handle table中CAS操作与A-B-A Problem解析
在研究handle table的时候顺便研究的东西。Baidu了下,发现国内这方面的资料几乎没得,然后就准备瞎bb下,为下面的一篇介绍handle table的结构做准备。关于lock-free data structure。以及解决这个问题中使用的CAS(compare and swap)操作。以...
NaN(非数字), PositiveInfinity(无穷大), NegativeInfinity(无穷小)
解释: NaN = Not a number 读书时发现这个有趣的问题, 我们用一段测试代码来开始: 1: using System; 2: using System.Collections.Generic; 3: 4: namespace Roger.Testing 5: { 6: public ...
CLR系列:大型对象堆
园子里有很多人已经对CLR的GC Heap有过激烈的讨论,里面有不少精华文章。但是既然是CLR系列,那么就不得不对GC Heap进行讲解。本文主要是对LOH(Large Object Heap)讲解。在一个托管进程被创建以后,在托管进程的内存空间里面,包含了System Domain,Shared ...
Windows Process内存组织结构及重要域解析
最近恶补操作系统和一些底层的知识。遂写篇文章来说说从操作系统的角度来研究Process的一些结构,实现,Porcess的初始化,重要的结构体域的定义,代表的含义,如何组织起来的,等。还有在前段时间研究托管的static字段到底在内存中如何组织的时候,遇到的handle table不熟悉的问题。 一个...
CLR系列:窥视HashTable
哈希表(Hashtable)简述我想大家对Hashtable很熟悉,平时在工作中使用的也是比较多的,现在都是3.5了,Dictionary 的出现已经可以替代Hashtable,但是我还是想对这个Net框架使用较多的对象(举个例子:Net的CLR处理一个程序集的字符串就是采用HashTable存储在...