查看“CIL”的源代码
←
CIL
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{stub}} '''Common Intermediate Language 通用中间语言 ''' ('''CIL' '',以前被称为 '''MSIL''') 是 [[.NET Framework]] 中使用的字节码中间语言。 编译为CLI字节码的代码被认为是 “托管代码”,可以由任何 [[CLI]] 兼容的编译器 (例如 [[C Sharp | C# 编译器]]) 创建,并由 [[Virtual Execution System]] (VES虚拟执行系统) 执行。 它是CPU和平台无关的。 大多数时候,开发人员不会直接在CIL中编程,而是使用更高级别的语言,例如 [[C Sharp | C#]],[[C++/CLI]],[[Visual Basic .NET]] 和 [[J#]]。 但是,CIL有自己的汇编语言,可以由ILAsm (<code>ilasm.exe</code>) 汇编。 要以汇编语言显示字节代码,请使用CIL反汇编程序ILDAsm (<code>ildasm.exe</code>)。 然而,一些专门的工具如.NET Reflector可以将字节码表示为任何支持的例如C#这样的高级语言,包括类,方法和其他元数据。 == 安全不安全的代码 == CIL字节代码既可以被认为是安全的,也可以被认为是不安全的。 默认情况下,所有C# 都是安全的,这意味着执行系统始终知道所有数据在哪里。 因此,不可能在安全代码中使用指针。 得益于此属性,消除了最常见的安全性和稳定性问题,例如缓冲区溢出和悬空(dangling)指针。 使用 [[Garbage collection| 垃圾回收器]] 来尽可能高效地使用内存。 === 不安全的代码 === 尽管在安全代码中无法使用指针,但CIL支持不安全的代码,该代码确实支持指针。 不安全的代码包含在标记为 “不安全” 的代码块中,在C # 中,它使用与C和C相同的语法。 对象可以被 “pinned”,以便 [[垃圾回收 | 垃圾收集器]] 不会移动数据,并且指针保持有效。 使用不安全的代码是完全合法的,尽管在正常的应用程序编程中不鼓励使用,并且可能用于编写内核级方法。 ==Executing CIL Code== CIL code is executed by a [[Virtual Execution System]] much like Java byte code. Usually this is in the form of a [[Just In Time compiler]], which translates the byte code into a native machine code, usually utilizing optimizations specific to that processor (for example SSE if available). [http://www.mono-project.com Mono] is an open-source .NET project, which consists of an CIL JIT'er (and interpreter for unsupported architectures) as well as a C#->CLI compiler. The JIT'er and can be [http://www.mono-project.com/Embedding_Mono embedded] in to any program or stand alone. The basic JIT'er and compiler is written in C and only requires the C Standard Library to run. == Metadata 元数据 == CIL字节码只是.NET程序集的一半。 另一半是元数据,VES使用它来查找需要调用的方法。 这使得继承或扩展类和覆盖方法成为可能,这样正确的覆盖方法将在运行时调用,而无需重新编译调用程序集。
本页使用的模板:
模板:Stub
(
查看源代码
)
返回至“
CIL
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息