2014-11-23 114 views
1

我正在寻找一种将小型计算密集型程序编译为机器代码可执行文件的方法。是否有编译为机器代码的C C++ C#编译器

该方案目前正在写在微软的Visual Studio C#的环境,但我也同样高兴做到这一点在C,C++或任何类似的变体,如果它导致我得到一个执行的机器代码。

(我也有SharpDevelop的环境)

我想避免运行时的开销,我想到的是通过使用一个运行时JIT编译器发生。

我希望只有我将永远使用该程序,大概只有我的机器(S),所以我没有有关部署的考虑担心。

+1

你是什么意思?当然C和C++编译为机器码。 – OldProgrammer 2014-11-23 23:13:42

+0

如果您要求汇编器输出查看,以前曾询问/回答过。 http://stackoverflow.com/questions/840321/how-can-i-see-the-assembly-code-for-a-c-program – 2014-11-23 23:16:32

+2

你提到的所有编译器都会创建执行机器代码的程序。机器代码生成的确切时刻恰恰不同。用C#有多个选项来确定何时。使用抖动可能是最快的方法。如果不是,那么你提前使用ngen.exe来生成机器码。或者使用使用C++编译器后端的.NET Native,当您不想共享时可能不在卡片中。所以这并不重要,你只关心你在机器周期上花了多少时间。你的耳朵之间的那些。 – 2014-11-23 23:18:13

回答

0

所有的C/C++编译器编译为机器码,这就是为什么你可以直接寻址的内存,有内联汇编,并关心你的编译系统上的sizeof(int)的。

+1

确实存在偶尔的C++解释器。 – 2014-11-24 00:15:10

+0

除了作为实验玩具之外,C++中间体还有什么用途?你真的认为这值得投票吗? – 2014-11-24 06:44:41

+0

(不是我的downvote)很明显,MSVC++似乎有能力编译普通的C++代码(如Hello,World)到.Net。在这种情况下,您不能直接寻址内存或者使用内联汇编器。 (并且通常它都是未定义的行为) – MSalters 2014-11-24 11:06:07