.net - 用于 .NET 的轻量级 x86 模拟器/在托管环境中执行 x86 代码

标签 .net x86 native managed emulation

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

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

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

有人知道这样的项目吗?

真诚的,

最佳答案

我不知道有哪个项目可以实现这一点。

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

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

如果 native 代码只是纯数字代码,则移植它可能比在模拟器下测试它更容易。如果它是使用库的复杂代码,我认为这实际上不起作用,即使存在这样的模拟器。

我只会关注您需要真正纯粹管理的功能,并尝试将其迁移。 C++/CLI 使这一过程变得更简单(假设您的 native 代码是 C++ 语言),因为您始终可以在启用 /clr:pure 的情况下尝试一次编译一个文件,然后根据需要修复错误。

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

关于.net - 用于 .NET 的轻量级 x86 模拟器/在托管环境中执行 x86 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411311/

相关文章:

c - 为什么要在函数序言/结语中使用 ebp?

java - 无法用.so文件解析相应的JNI函数

c# - 调试时是否可以完全忽略 catch block ?

.net - 音频比较

c# - GzipStream 文件 block 压缩

assembly - avx sqrt的三个操作数?

C# lambda 引用输出

c++ - 当前的 x86 架构是否支持非临时加载(来自 "normal"内存)?

plugins - 我可以从ElasticSearch native 脚本插件中更新值吗?

reactjs - 更改 React-Native-Material-Design 模块中按钮的背景颜色