c++ - 应该如何设置王朝?

标签 c++ compilation jit luajit

我正在尝试使用dynasm。我已经在网上找到了几本教程,但是它们都需要使用奇怪的代码行,例如|.arch x64,但我的编译器(MSVC)拒绝了这些代码。提到了离线Lua解析器和.dasc文件,但是这些教程都没有提到应如何设置这些内容。

如何在项目中设置动态?

最佳答案

通过DynASM,您可以通过混合C代码和ASM代码来简化编写程序集的过程。 DynASM文件必须经过预处理。编译DynASM文件(.dasc)的输出是一个C文件(.c),您以后可以将其集成到项目中。

要预处理DynASM文件,您应该使用LuaJIT源代码(dynasm/dynasm.lua))附带的dynasm程序。您提到的“怪异”行是DynASM处理的ASM代码。asm代码作为字节值存储在称为actions的数组中在生成的C程序中。

乔什·哈伯曼(Josh Haberman)在DynASM上有一篇很棒的文章:Hello, JIT World: The Joy of Simple JITs。本教程包括示例代码。该代码以GitHub repository的形式提供。获取并开始使用它(注意:当前master分支尚未构建,我只是发送了一个pull-request来对其进行修复)。

DynASM的另一个很好的介绍是:

  • The Unofficial DynASM documentation(包括教程,说明引用等)。
  • DynASM Luapower(.lua文件中的DynASM)。
  • 关于c++ - 应该如何设置王朝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448824/

    相关文章:

    c++ - Openssl EVP "EVP_CTRL_GCM_GET_TAG"失败

    c - 在 C 中,我在编译时得到 "error: expected expression before ' )' token"

    c - 如何衡量编译成功的文件百分比?

    c# - 可以内联静态类扩展吗?

    c++ - 将 unsigned char* 缓冲区分配给字符串

    c++ - 检查数组索引是否存在

    c++ - 为什么 MSVC 编译器不检测 std::array 越界访问

    java - INSTALL_FAILED_MISSING_SHARED_LIBRARY 和意外的顶级异常

    python - Python 3 解释器是否具有 JIT 功能?

    linux - 在 SIGILL 处理程序中,如何跳过有问题的指令?