将C#代码直接编译成机器代码的指令是什么?
在命令行下可以将C#代码直接编译成机器代码,这样就不需要在机器上装NET FRAMEWORK 了,这样是否可行。编译的指定是什么。 问题点数:50、回复次数:11Top
1 楼xiaodele(小得乐)回复于 2003-09-01 11:26:52 得分 5
没有这个可能吧,你拿什么编译c#啊,基础没了,c#就什么都不是了Top
2 楼lxhvc(lxhvc)回复于 2003-09-01 11:43:12 得分 5
是呀,更本没有这样的方法和命令,不然干吗部署.NET程序的时候要安装FrameWork.
就是这个道理呀。所有.NET程序都被编译成中间语言,运行时才被FrameWork转译成及其码。
Top
3 楼Aaron_Lau()回复于 2003-09-01 11:57:58 得分 0
但JIT编译器最终还是要将其编译成机器代码。我想知道JIT是否提供了一个公共的接口来实现我样的功能。Top
4 楼Sunmast(速马@Redmond, WA)回复于 2003-09-01 12:07:08 得分 5
那是安装时编译,省得运行时再编译
不过一样少不了.NET Framework的支持Top
5 楼doose()回复于 2003-09-01 12:34:59 得分 5
只能生成MSIL Code吧Top
6 楼jjcccc(就这样吧)回复于 2003-09-01 12:39:58 得分 0
可以生成本机映象代码,但不能脱离.Net环境。Top
7 楼jjcccc(就这样吧)回复于 2003-09-01 12:52:28 得分 10
用Ngen.exe MyAssembly 可以将MSIL(应用程序的全部程序集)代码编译为本机代码,并可以安装到本机映象高速缓存中。但不能删除原来的程序集和MSIL代码,因为仍需要元数据。
可以用资源管理器打开Winnt\Assembly目录,可以看到很多.Net的程序集的‘类型’为‘本机映象’。Top
8 楼_weiKun_(Virus)回复于 2003-09-01 12:52:28 得分 10
你得想法太超群了,.net只能通过ILDASM翻译成MSIL码,它和汇编语言差不多了。但只能紧紧如此。
Top
9 楼jjcccc(就这样吧)回复于 2003-09-01 13:13:35 得分 0
to _weiKun_(Virus) :
什么叫“.net只能通过ILDASM翻译成MSIL码”啊?
1.不是ILDASM(这是将MSIL翻译成类似汇编语言)
2.不是只能(难道Brorland或其它公司支持.Net的编译器就非得用微软的"ILDASM"(按你的说法)才能生成MSIL ?)
Top
10 楼_weiKun_(Virus)回复于 2003-09-01 18:45:33 得分 0
呵呵,有人挺能咬文嚼字呀。Top
11 楼jjcccc(就这样吧)回复于 2003-09-01 21:47:51 得分 0
还是认真点好,否则容易误导。Top
12 楼cppTrier(修炼ing~~~)回复于 2003-09-01 21:54:31 得分 10
楼主有这样的想法实在是有趣,.net程序运行在虚拟机上,JIT编译器只是虚拟机的一个部分,虚拟机做的工作远不是 仅仅把IL转换成机器码那么简单。好比GC,就是虚拟机的一部分,C#程序要是没了GC,那么分配出去的内存就收不回来了。
要把C#程序转换成机器码,只要写一个新编译器,目标码改成汇编就可以了。但是反射、运行期类型支持、.net remoting、以及最重要的GC 之类需要CLR支持的功能就不能用了,如果你的C#程序里用到了.net类库,那么楼主还需要把.net类库用COM的方法全部重新实现一遍,所以这个..不太现实吧。Top




