gpt4 book ai didi

programming-languages - Windows 8 metro/winRT 中的新 JIT 编程语言是否可行?

转载 作者:行者123 更新时间:2023-12-03 12:09:29 25 4
gpt4 key购买 nike

假设我想创建一种新的编程语言或使用一些 MS 不支持的语言(Haskell、Java ......无论如何),但希望能够针对 Windows 8 Metro/winRT 进行编码。

我知道 Metro UI 中的所有应用程序都是沙盒化的。
我知道我可以用 native C++ 编程,所以我假设我也可以用 C 或汇编语言进行编程。
但:

  • 是否可以创建一个即时生成汇编代码的 JIT(如 CLR JIT)而不破坏沙盒限制?
  • 假设我只会使用 API allowed in Metro sandbox是否可以不使用 XAML 作为 UI 界面? - 我可以直接使用 Direct2D/DirectX 吗?
  • 最佳答案

    1) 除了可以访问某些受限 API 的浏览器(并且可以集成其 JIT,但是 afaik,尚未发布浏览器的授权 API),标准 Win8 Metro App 将无法访问诸如“VirtualAlloc”之类的功能/VirtualProtect”(用于创建/更改读/写/可执行内存页面):表示在Windows 8 Metro App下用C++开发的JIT不会通过认证。您已经可以使用 Visual Studio 11 Beta 提供的认证工具包检查您的应用程序。

    有人可能会说“我要破解 PE 部分以强制读 + 写 + 可执行”部分,而不必使用 VirtualAlloc/VirtualProtect 函数,但不幸的是,这个 hack 也不起作用,因为你被迫编译 Windows 8 Metro exe 带有选项/NXCOMPAT:YES,这意味着它正在启用“数据执行保护”(DEP)。

    另一个人可能会尝试动态生成 DLL 并使用新的“LoadPackagedLibrary”从磁盘加载它们,但如果 DLL 不是原始部署的一部分(实际上,我无法做到),则此功能实际上被锁定好好工作)

    唯一可用的 JIT 是 .NET JIT。所有使用 DLR(.NET 中的动态语言运行时)甚至反射 Emit 的 .NET 动态语言,如 IronPython/IronRuby(如果它们针对 Win8 Metro 进行了更新)都会被 jitted。因此,如果您以 .NET CLR 字节码为目标,您可以对代码进行 jitted。

    例如,能够在 .NET CLR 中运行 Java 代码的 IKVM.Net 可以在 Windows 8 Metro App 下运行(但条件是它将被重构为仅使用经过认证的 Win8 Metro API)。

    2) 是的,可以在不使用 XAML 的情况下编写 Direct2D/Direct3D11 应用程序。

    检查 Windows 8 Metro 示例 http://code.msdn.microsoft.com/windowsapps/Windows-8-Modern-Style-App-Samples .例如,大多数 Direct2D 示例不使用 XAML。

    作为 Metro Window 系统较低级别 API 的 CoreWindow 类是纯 Direct2D/Direct3D11 应用程序的入口点。

    关于programming-languages - Windows 8 metro/winRT 中的新 JIT 编程语言是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279458/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com