[Programming IL] 从Hello World开始
名词解释
IL = Intermediate Language, 在.Net的设计中成为CIL = Common Intermediate Language, 而因为CIL本身是通用的,而微软为他设计了一种实现,在微软平台上我们也可以称他为MSIL
目标
为.Net平台的底层设计提供一个具体实现,基本编程语言的特性,如流程控制,判断,算术计算,地址等等。还有面向对象的具体设计,类和类之间的关系,隐藏,继承,接口等等。更有一些对函数式语言的支持,了解IL不仅仅是对程序的深一步理解,更是对.Net Framework产生框架性认识的重要依据。个人认为 :)
基础知识
每一个.Net应用程序或者是程序集都实际上一个PE(Portable Execution)文件, 关于PE文件格式等等的详细说明将在后面讲述
实例 - 从HelloWrold开始
代码:
1: .assembly extern mscorlib {}
2: .assembly hello {}
3: .method static public void main() cil managed
4: {
5: .entrypoint
6: .maxstack 1
7: ldstr "Hello world!"
8: call void [mscorlib]System.Console::WriteLine(class System.String)
9: ret
10: }
1. mscorlib位于 %Windows%/Microsoft.NET/Framework/v2.0.50727 下,他是.Net程序和API交互的基础,包含了基础类库(BCL)的实现
2. 设置程序集名称为hello
3. ...
5. .entrypoint 入口点
6. 分配栈
7. 加载string
8. 调用方法
9. 返回
了解IL很久了,最近探索下.Net设计等等东西, 开始看IL也有一段时间了,工作比较忙,反而搁置了,写这个东西也不是为了啥,只是督促自己一下.
参考书籍:
Expert.NET 2.0 IL Assembler
Common Language Infrastructure Partition II