社区
C#
帖子详情
如何把C#程序一次性编译成机器码,而不是中间码?
xghost
2004-01-01 11:12:02
如何把C#程序一次性编译成机器码,而不是中间码?
...全文
399
26
打赏
收藏
如何把C#程序一次性编译成机器码,而不是中间码?
如何把C#程序一次性编译成机器码,而不是中间码?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
njx
2004-01-03
打赏
举报
回复
skykevin(蓝屿) ,你是否可以把你得方法说得再具体些,这是什么书上介绍的?
xghost
2004-01-02
打赏
举报
回复
我试了,感觉启动比原来快多了
sclarkca810619
2004-01-02
打赏
举报
回复
hah
skykevin
2004-01-02
打赏
举报
回复
可以做到。方法如下:
用与.NET框架SDK一起发布的一个工具NGen.exe。该工具可以将一个程序集中的所有IL代码(中间码)转化为本地代码,并将结果代码保存在磁盘上的一个文件中。在运行时程序集被加载时,CLR将自动检查是否有该程序集的预编译版本存在,如果存在,CLR将加载预编译的代码,不再需要额外的运行时编译(JIT)。
abcynic
2004-01-02
打赏
举报
回复
大家做个开源项目,用c++写一个vcl那样的类库和运行环境,同时具有.net Framework的接口及C#的语言特性。然后再写一个编译器。就一切ok了。
我觉得c#的大多数功能还是都可以本地化的,除了分布式调用方面。
delphi能做的,用c#应该也可以。
falcon4d
2004-01-02
打赏
举报
回复
自己写一套vs.net估计就差不多就能实现了:)
KevinCao
2004-01-02
打赏
举报
回复
那我就等楼上的写出c#编译器
lihao9806
2004-01-02
打赏
举报
回复
自己写个编译器就行了. 呵呵~~~
KimSoon98
2004-01-02
打赏
举报
回复
活活,好热闹呀
烤火的鱼
2004-01-02
打赏
举报
回复
违背了小比的本意啊
KevinCao
2004-01-02
打赏
举报
回复
但还是需要CLR的支持,这样做只是可能在运行效率上有区别
zhongkeruanjian
2004-01-01
打赏
举报
回复
如何把java程序一次性编译成机器码,而不是中间码?
呵呵,那是不可能的
速马
2004-01-01
打赏
举报
回复
别想了,不可能
song0311
2004-01-01
打赏
举报
回复
你研究出来,我们学习啊
yanransoft
2004-01-01
打赏
举报
回复
不可能
efoxy
2004-01-01
打赏
举报
回复
其实有可能,只要你自己先完成一套和.net framework具有同样用户接口的类库,然后再自己写一个编译器就做到了
huangsuipeng
2004-01-01
打赏
举报
回复
学习
一半乐事
2004-01-01
打赏
举报
回复
微软可以做到。如果别人做到了,.net framework还有什么用。
cherishl
2004-01-01
打赏
举报
回复
.NET是建立在中间代码上的,你非要编译成机器码有意义吗?
JGTM2000
2004-01-01
打赏
举报
回复
@Sunmast:
Nothing is impossible. Search google for "salamander linker for .NET". And, never, ever say "impossible" to limit your view to the world.
我怎么就认为从原理上就可能呢?虽然我水平还到不了能实现这件事情……:)
加载更多回复(6)
C#
程序
的编译过程
C#
程序
的编译过程,如下图 总结:编译器将
C#
代
码
编译成
DLL/EXE,DLL/EXE包含metadata(清单数据,对代
码
的描述)和IL(
中间
语言),IL(
中间
语言)经过CLR/JIT第二次编译才是
机器
码
一,
程序
的编译过程,步骤理解 1>
C#
源文件经过CSC.exe把Visual
C#
程序
代
码
编译成
IL文件(这里有很多参数和开关选项,参考 http://blog.c...
C#
编译过程
总结:编译器将
C#
代
码
编译成
DLL/EXE,DLL/EXE包含metadata(清单数据,对代
码
的描述)和IL(
中间
语言),IL(
中间
语言)经过CLR/JIT第二次编译才是
机器
码
一,
程序
的编译过程,步骤理解 1>
C#
源文件经过CSC.exe把Visual
C#
程序
代
码
编译成
IL文件(这里有很多参数和开关选项,参考 http://blog.chinaunix.net/uid-20715239-id-1219110.html),编译器编译生成
程序
集(exe dll) 2>
c#
代
码
第一次编译为一.
源代
码
先转字节
码
,再转
机器
码
的过程
是的,对于某些编程语言(如Java、
C#
等)和它们的运行时环境(如Java虚拟机JVM、Common Language Runtime CLR等),
程序
的源代
码
首先会被
编译成
字节
码
(Bytecode),然后在运行时,这些字节
码
再由相应的虚拟机或即时编译器(Just-In-Time, JIT Compiler)转换成特定平台的
机器
码
来执行。但值得注意的是,现代的 JavaScript 引擎为了提高性能,通常会使用一些优化技术,如即时编译(JIT)和热点分析,将频繁执行的代
码
片段转换成
机器
码
以提高执行效率。
C#
反编译工具:Reflector使用详解
反编译是将编译后的
程序
代
码
(通常是
机器
码
或
中间
语言代
码
)转换回源代
码
的过程。这一过程对软件开发者而言,是一种逆向工程技术,它在软件开发、代
码
理解和维护中扮演着重要的角色。
C#
编译器(csc.exe)将
C#
源代
码
文件(.cs)转换为.NET
程序
集(.dll或.exe)的过程可以分为几个主要步骤。理解这些步骤对于把握反编译还原工作至关重要。词法分析和语法分析:编译器首先对源代
码
进行词法分析,将代
码
分解成一系列的标记(tokens)。
从高级源
码
到
机器
码
的过程,反射DLL加载卸载
在Java中有虚拟机,代
码
运行时虚拟机把Java语言
编译成
与机器无关的字节
码
,然后再把字节
码
编译成
机器指令执行,那么在.NET中
程序
是如何运行的呢? 其实运行原理是一样的,.NET中的虚拟机是CLR(公共语言运行时),无论是
C#
程序
还是VB
程序
,首先会由CLR
编译成
与平台无关的
中间
语言IL,然后由公共语言运行时CLR的 即时编译器JIT
编译成
机器代
码
,再由CPU去执行它。所以说.NET
程序
也是需要二次编译才能运行,其中涉及的相关术语解释如下: IL/MSIL (Microsoft Intermed..
C#
111,111
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章