【问题标题】:Lightweight x86 Emulator for .NET / Executing x86 code in a managed environment用于 .NET 的轻量级 x86 模拟器 / 在托管环境中执行 x86 代码
【发布时间】:2023-03-29 08:01:01
【问题描述】:

我们公司正在将其整个产品线从 C++ 代码库迁移到 .NET Framework。我们有一个非常大的代码库,并且这种迁移是在多年的过程中逐步完成的。

我们希望享受纯托管代码(例如 Silverlight)的一些好处,但有许多旧版 C++/x86 模块需要我们花时间才能移植到 .NET。

一种解决方案是让我们将这些模块加载到一个轻量级 x86 模拟器中,该模拟器在 .NET Framework 的一个小型内存沙箱中运行。这将允许我们调用遗留的 x86 DLL 代码,同时维护一个纯托管应用程序。

有人知道这样的项目吗?

此致,

丹

【问题讨论】:

    标签: .net x86 native managed emulation


    【解决方案1】:

    我不知道有什么项目可以做到这一点。

    话虽如此,我认为无论如何这都不是一个现实的期望。使用本机代码不仅仅是能够运行 x86 指令。

    更大的问题是关于库代码的使用。这不会移植到模拟器中,因为模拟器可能不仅需要实现 x86 指令,还需要模拟 Windows API 等。

    如果本机代码只是纯数字代码,那么移植它可能比在模拟器下测试它更容易。如果是使用库的复杂代码,即使存在这样的模拟器,我也看不到它实际上可以工作。

    我将只关注真正纯管理所需的功能,并尝试将其迁移。 C++/CLI 使这更简单(前提是您的本机代码是 C++),因为您始终可以尝试在启用 /clr:pure 的情况下一次编译一个文件,并根据需要修复错误。

    对于不需要 100% 托管的东西,C++/CLI 中的互操作是一个很好的垫脚石,直到您可以移植您的代码库。

    【讨论】:

      【解决方案2】:

      更改为 Java 而不是 .net。然后你可以使用这个:

      http://jpc.sourceforge.net

      运行现有代码

      或使用 LLJVM 或类似的东西从 C++ 编译成 Java B 代码。

      【讨论】:

        猜你喜欢
        • 2010-12-07
        • 2010-09-12
        • 1970-01-01
        • 2020-01-16
        • 2012-07-03
        • 2018-03-23
        • 2014-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多