NoteZ
NoteZ copied to clipboard
LLVM TableGen
Prologue
最近希望能从 llvm 抽出来一个定制的精简 disassembler, 通过研究发现指令的信息放在 AArch64InstrInfo.td
但是如何从 AArch64InstrInfo.td
生成我们需要格式需要参考 TableGen 的使用.
这里可以参考 llvm/cmake/modules/TableGen.cmake
以及 https://llvm.org/docs/TableGen/index.html#id5
Somniloquy
对于指令的TableGen源码/文档参考
llvm/utils/TableGen/TableGen.cpp
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/AArch64InstrFormats.td
llvm/docs/TableGen/LangIntro.rst
简单 llvm-tblgen
的使用演示
/Users/jmpews/project/llvm/build/Debug/bin/llvm-tblgen -I /Users/jmpews/project/llvm/include -I /Users/jmpews/project/llvm/lib/Target/ARM /Users/jmpews/project/llvm/lib/Target/ARM/ARM.td -gen-register-info
/Users/jmpews/project/llvm/build/Debug/bin/llvm-tblgen -I /Users/jmpews/project/llvm/include -I /Users/jmpews/project/llvm/lib/Target/AArch64 /Users/jmpews/project/llvm/lib/Target/AArch64/AArch64.td -gen-register-info
Visual Studio 调试
调试启动参数
-I "D:\BackupZ\DownloadZ\llvm-6.0.0.src.tar\llvm-6.0.0.src\include" -I "D:\BackupZ\DownloadZ\llvm-6.0.0.src.tar\llvm-6.0.0.src\lib\Target\ARM" "D:\BackupZ\DownloadZ\llvm-6.0.0.src.tar\llvm-6.0.0.src\lib\Target\ARM\ARM.td" -print-enums -class=Instruction