Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit
authorSean Callanan <scallanan@apple.com>
Sat, 19 Dec 2009 02:59:52 +0000 (02:59 +0000)
committerSean Callanan <scallanan@apple.com>
Sat, 19 Dec 2009 02:59:52 +0000 (02:59 +0000)
commit8ed9f51663bc5533f36ca62e5668ae08e9a1313f
tree3054645839caee367e9403507d8487538819ed5b
parente9ec6ad1ba5fd9ad70f5d0c059c5a5aa44f501f7
Table-driven disassembler for the X86 architecture (16-, 32-, and 64-bit
incarnations), integrated into the MC framework.

The disassembler is table-driven, using a custom TableGen backend to
generate hierarchical tables optimized for fast decode.  The disassembler
consumes MemoryObjects and produces arrays of MCInsts, adhering to the
abstract base class MCDisassembler (llvm/MC/MCDisassembler.h).

The disassembler is documented in detail in

- lib/Target/X86/Disassembler/X86Disassembler.cpp (disassembler runtime)
- utils/TableGen/DisassemblerEmitter.cpp (table emitter)

You can test the disassembler by running llvm-mc -disassemble for i386
or x86_64 targets.  Please let me know if you encounter any problems
with it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91749 91177308-0d34-0410-b5e6-96231b3b80d8
18 files changed:
cmake/modules/LLVMLibDeps.cmake
lib/Target/X86/CMakeLists.txt
lib/Target/X86/Disassembler/CMakeLists.txt
lib/Target/X86/Disassembler/X86Disassembler.cpp
lib/Target/X86/Disassembler/X86Disassembler.h [new file with mode: 0644]
lib/Target/X86/Disassembler/X86DisassemblerDecoder.c [new file with mode: 0644]
lib/Target/X86/Disassembler/X86DisassemblerDecoder.h [new file with mode: 0644]
lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h [new file with mode: 0644]
lib/Target/X86/Makefile
lib/Target/X86/X86TargetMachine.cpp
utils/TableGen/CMakeLists.txt
utils/TableGen/DisassemblerEmitter.cpp
utils/TableGen/X86DisassemblerShared.h [new file with mode: 0644]
utils/TableGen/X86DisassemblerTables.cpp [new file with mode: 0644]
utils/TableGen/X86DisassemblerTables.h [new file with mode: 0644]
utils/TableGen/X86ModRMFilters.h [new file with mode: 0644]
utils/TableGen/X86RecognizableInstr.cpp [new file with mode: 0644]
utils/TableGen/X86RecognizableInstr.h [new file with mode: 0644]