diff options
author | Sean Callanan <scallanan@apple.com> | 2009-12-19 02:59:52 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2009-12-19 02:59:52 +0000 |
commit | 04cc307eddae4681709cb4f019e5f9363e0506c3 (patch) | |
tree | b92c2eab235c497af8f8d947e7955dbe034860ea /llvm/lib/Target/X86/X86TargetMachine.cpp | |
parent | 6fda43f4c116ee2809791f67705f2055f8c2fb13 (diff) | |
download | bcm5719-llvm-04cc307eddae4681709cb4f019e5f9363e0506c3.tar.gz bcm5719-llvm-04cc307eddae4681709cb4f019e5f9363e0506c3.zip |
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.
llvm-svn: 91749
Diffstat (limited to 'llvm/lib/Target/X86/X86TargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86TargetMachine.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp index 0152121e531..90d9083d78b 100644 --- a/llvm/lib/Target/X86/X86TargetMachine.cpp +++ b/llvm/lib/Target/X86/X86TargetMachine.cpp @@ -38,6 +38,8 @@ static const MCAsmInfo *createMCAsmInfo(const Target &T, StringRef TT) { } } +extern "C" void LLVMInitializeX86Disassembler(); + extern "C" void LLVMInitializeX86Target() { // Register the target. RegisterTargetMachine<X86_32TargetMachine> X(TheX86_32Target); @@ -47,6 +49,8 @@ extern "C" void LLVMInitializeX86Target() { RegisterAsmInfoFn A(TheX86_32Target, createMCAsmInfo); RegisterAsmInfoFn B(TheX86_64Target, createMCAsmInfo); + LLVMInitializeX86Disassembler(); + // Register the code emitter. TargetRegistry::RegisterCodeEmitter(TheX86_32Target, createX86MCCodeEmitter); TargetRegistry::RegisterCodeEmitter(TheX86_64Target, createX86MCCodeEmitter); |