2011-04-07 44 views
1

我认为这将是通用中级语言,但在记事本中,它看起来完全不是这样。它在现实中看起来比在教程中更丑陋吗?或者它是从CIL进一步编译的一些字节码形式?写入dotnet可执行文件的语言是什么?

+3

是的,methinks它将是一个二进制表示! – 2011-04-07 19:56:04

+0

这可能是一个不寻常的问题,但对于刚刚学习.NET的人来说,这个问题并不遥远。我认为它不值得赞扬。从我+1。 – 2011-04-07 20:38:06

回答

2

这是CIL是二进制格式的名称,而不是你想要的“汇编器”。

你可能会想象.NET程序集会是文本文件吗?

+3

我可以想像它。我可以想象很多事情!但是,唉,我不能飞。 – Amy 2011-04-07 20:00:12

1

.NET可执行文件是一个二进制文件,它具有一个PE标头(与本机可执行文件相同,但值稍有不同)。 PE头告诉操作系统加载CLR,然后加载程序集。

超出标题的内容是CIL代码的二进制表示,以及一些元数据和其他内容。您在教程中看到的文本是CIL的文本表示,与您在关于汇编语言编程的教程中看到的汇编语言代码几乎就是二进制机器代码的文本表示形式相同。

请参阅http://www.yetanotherchris.me/home/2010/7/12/inside-net-assemblies-part-1.html(其中包括更多信息)。

+0

.Net可执行文件不具有与本机可执行文件相同的格式。 – Guge 2011-04-07 20:38:52

+1

@Guge:谢谢。我编辑了我的答案来澄清。 – 2011-04-07 22:26:44

0

.Net可执行文件通常不会被编写,它是从另一种语言编译的,例如C#,F#或VB.Net。

可执行文件的内容可以通过ILDASM工具查看。

内容首先是用于反射,签名或其他元代码目的的清单。

其次有自己的MSIL指令。这些都是一种字节码格式,但是ILDASM会告诉你这些指令是什么。

并且有时会将资源(如图像,声音或其他内容)打包到可执行文件中。

可执行文件或者在安装过程中(我认为这不常见)或者作为执行的先驱,被即时编译为本机代码。生成的本地代码可以存储以供重用。 (这是我在PDC 2001期间被告知的,可能是“过时”。)