我正在尝试使用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/

    10-11 21:25