代码之家  ›  专栏  ›  技术社区  ›  Corey Ogburn

不同的前任如何在正确的运行时运行?

  •  0
  • Corey Ogburn  · 技术社区  · 14 年前

    我一直很好奇一个扩展,EXE,如何能像它一样多功能,因为如果你组装一个汇编程序,你会在你的处理器的机器代码中得到一个EXE,但是如果你编译一个C#或其他.Net程序,你也会得到一个EXE,除了它在正确的运行时环境中运行。我不确定这是不是不同的操作系统(我想是的),但当执行一个EXE时,它是如何决定如何执行它的?

    另一方面,如果我正在编写自己的编程语言,我将如何将运行时环境与此机制结合起来?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Bob    14 年前

    当把一个.NET程序编译成一个EXE时,它不仅仅是一块字节码(比如Java)。实际上创建了一个本机可执行文件,它将加载.NET运行时并将.NET字节码传递给它,或者显示一条友好的ish错误消息,指示框架不可用。

    这种格式甚至比这更灵活,因为每个windowsexe实际上在开始时都包含一个DOS程序,当作为DOS程序执行时,它将显示一个错误(“无法在DOS模式下运行”)。

    您可以在Wikipedia上阅读有关PE格式的更多详细信息: http://en.wikipedia.org/wiki/Portable_Executable