NET的 CLR真的是C#开发的??

iloveppmm 2009-03-20 02:24:51

虽说许多语言的编译器可以用该语言自身开发。这倒是没什么问题。

可前两天,看到说linux的mono项目中,net的编译器是用c#开发的。

这就不理解了。

因为net与其他语言编译后为机器代码不同,他是中间码。

也就是,即使你用c#写出了具有编译器功能的代码,可编译后也只不过是IL,仍需要在CLR环境下运行。难不成所谓的编译器在另一个框架上运行??

或者,退一步。 即使只是将C# 翻译为IL的这部分, 本身就是IL形式的代码,这部分代码要执行还需要CLR(这得是二进制的吧)。

那在编译时,先将 IL-Complier部分 JIT执行于CLR,然后,在翻译C#到IL。那,效率?
...全文
203 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jie3614 2009-03-23
  • 打赏
  • 举报
回复
微软真害人吖 整天整这些霸权文化 害的我们兄弟们整天探讨这些问题
微软如果把这些技术写个白皮书多好吖 或者人家已经写了咱们没有看到
应该到英文网站上去看看(这又是霸权文化,哎!)

这儿有以网站介绍MSIL的 我觉得挺好的 跟大家分享一下
http://hi.baidu.com/shidio/blog/item/9a2bd900809fe717738b655f.html
liucfy 2009-03-23
  • 打赏
  • 举报
回复
应该是C或者C++写的。如果VS2005肯定不是C#写的,CLR性能比C/C++差远了.
sageking2 2009-03-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zjh222 的回复:]
微软带头,一帮MVP都是骗人的
一开始宣传,说C#具有C++的行动力,我看Net连MFC的1/3都不如呢
[/Quote]
你落伍了。

.NET怎么说也支持那么多语言和现代的新技术,我上课停老师说MFC的BUG相对较多,连微软自己都不用。
zjh222 2009-03-20
  • 打赏
  • 举报
回复
微软带头,一帮MVP都是骗人的
一开始宣传,说C#具有C++的行动力,我看Net连MFC的1/3都不如呢
iloveppmm 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
有人说过CLR是C#写的吗?估计你是看错了或者你看的是以讹传讹的东西...

用C#写的是C#编译器...在.NET 4.0中包含了这个编译器的一部分用于支持C# 4.0的dynamic特性...
[/Quote]

那应该就没错了

那篇文章里 专指的linux的mono项目。

我把c#编译器 和 CLR 混为一谈了。 其实,在我一楼写到后边已经认识到了。



那就是 编译器本身也是IL,不过,这似乎到好了,编译器在linux和windows上跨平台?? 写两个CLR就够了。

其实,从另外一个角度看,CLR 何尝不是一个编译器呢?? 把MSIL翻译成机器指令。 也许我把c#编译器 和CLR 整体看成NET的编译器
就是因为这一点。

leehong0704 2009-03-20
  • 打赏
  • 举报
回复
我想编译器 那部分应该不是用C#写的,或者整个.NET解释器编译的时候直接是机器码也说不一定。
huwei001982 2009-03-20
  • 打赏
  • 举报
回复
只是说了 vs 和 framework 大部分是 c#写的吧

clr 应该是 c 写的
Teng_s2000 2009-03-20
  • 打赏
  • 举报
回复
就不用关心这个了吧
suners 2009-03-20
  • 打赏
  • 举报
回复
事实胜于雄辩。。。。
lethwei 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 iloveppmm 的帖子:]

虽说许多语言的编译器可以用该语言自身开发。这倒是没什么问题。

可前两天,看到说linux的mono项目中,net的编译器是用c#开发的。

这就不理解了。

因为net与其他语言编译后为机器代码不同,他是中间码。

也就是,即使你用c#写出了具有编译器功能的代码,可编译后也只不过是IL,仍需要在CLR环境下运行。难不成所谓的编译器在另一个框架上运行??

或者,退一步。 即使只是将C# 翻译为IL的这部分, 本身就是IL形式…
[/Quote]
其实呢, c 语言的编译器基本上都是 c 写的, 很奇妙是吧?
当初 tompson 有篇著名的演讲, 就是关于这个滴
f124096424 2009-03-20
  • 打赏
  • 举报
回复
可以使用 IL dasm查看用点.NET写的程序。
benbirdar 2009-03-20
  • 打赏
  • 举报
回复
觉得不是

.net语言 —> 中间码 —> 机器码

顺便请问,谁知道这个所谓的中间码是怎么回事,是什么样的中间码?
vrhero 2009-03-20
  • 打赏
  • 举报
回复
有人说过CLR是C#写的吗?估计你是看错了或者你看的是以讹传讹的东西...

用C#写的是C#编译器...在.NET 4.0中包含了这个编译器的一部分用于支持C# 4.0的dynamic特性...

7,758

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧