是否有编译为机器代码的 C C++ C# 编译器 [关闭]
Posted
技术标签:
【中文标题】是否有编译为机器代码的 C C++ C# 编译器 [关闭]【英文标题】:Is there a C C++ C# compiler that compiles to machine code [closed] 【发布时间】:2014-11-23 23:10:20 【问题描述】:我正在寻找一种将小型计算密集型程序编译为机器代码可执行文件的方法。
该程序目前是在 Microsoft Visual Studio C# 环境中编写的,但我很乐意在 C、C++ 或任何类似变体中编写它,如果它导致我获得机器代码可执行文件。
(我也有 SharpDevelop 环境)
我想避免使用运行时 JIT 编译器产生的运行时开销。
我希望只有我会使用该程序,而且可能只会在我的机器上使用,所以我不必担心部署方面的问题。
【问题讨论】:
什么意思?当然 C 和 C++ 编译成机器码。 如果您要求查看汇编程序输出,之前在此处询问/回答。 ***.com/questions/840321/… 您提到的所有编译器都会创建执行机器代码的程序。生成机器代码的确切时间只是不同的。 C# 有多个选项来确定确切的时间。使用抖动可能是最快的方法。如果不是,那么您可以使用 ngen.exe 提前生成机器代码。或者使用 .NET Native,它使用 C++ 编译器的后端,当您不想共享时,可能不会出现在卡片中。所以这并不重要,你只关心你在机器周期上花费了多少时间。你耳朵之间的那些。 向 OldProgrammer、Hans、Jeff D 致敬。我是一名 VeryOldLapsedProgrammer,最近又回来了。使用 C# 时,很明显 Build 生成了 IL,而 IL 又在运行时进行了 JIT。根本不是我的样子。如果 C++ 构建(编译和链接)为机器代码可执行文件,我会很高兴。基耶。 【参考方案1】:所有 C/C++ 编译器都编译为本机机器代码,这就是为什么您可以直接寻址内存、拥有内联汇编器并关心您正在编译的系统上的 sizeof(int)。
【讨论】:
确实存在偶尔的 C++ 解释器。 除了作为实验玩具,C++ 解释者还有什么目的?你真的认为这值得投反对票吗? (不是我的反对票)显然不正确,MSVC++ 似乎有能力将普通的 C++ 代码(如 Hello, World)编译为 .Net。在这种情况下,您不能直接寻址内存或使用内联汇编程序。 (一般来说都是未定义的行为) 仅供参考,您确定 可以 直接从 .NET 访问内存(C# 有指针),或者获取sizeof(int)
的值。内联汇编在混合模式 dll 中可用(使用带有原生 C++ 部分的 C++/CLI)。
@JeffD。 - 不是我的反对票。以上是关于是否有编译为机器代码的 C C++ C# 编译器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章