Displaying 8 results from an estimated 8 matches for "disassemblertables".
2015 Dec 05
2
Question about Decoding Conflict of DisassemblerTables from TableGen
Hi All,
I have faced decoding conflict of DisassemblerTables from TableGen. I
have instructions with same encoding and different mnemonic among
different architecture versions. I have used Predicates and
AssemblerPredicates to distinguish them on Codegen and Assembler but
it does not work on Disassembler. When I look at
TableGen/FixedLenDecoderEmitter.cpp, o...
2009 Aug 22
0
[LLVMdev] X86 Disassembler
...enter.h (revision 0)
@@ -0,0 +1,72 @@
+//===- Indenter.h - Output indenter -----------------------------*- C+
+ -*-===//
I'm not a big fan of manipulators like this (as David Greene can tell
you ;-). I just added a new raw_ostream::indent method, so now
instead of stuff like this:
+void DisassemblerTables::emitContextDecision(
+ std::ostream& o2,
+ Indenter& i2,
...
+ o2 << i2.indent() << "struct ContextDecision " << name << " = {" <<
std::endl;
+ i2.push();
+ o2 << i2.indent() << "{ /* opcodeDecisions */" <&l...
2009 Aug 18
0
[LLVMdev] X86 Disassembler
..._unreachable()" macro as well.
12. You use "std::endl" a lot. This is discouraged by the coding
standard:
http://llvm.org/docs/CodingStandards.html#ll_avoidendl
13. You use "std::ostream" a lot. Would it be appropriate to use
"raw_ostream" instead?
14. In DisassemblerTables::setTableFields, you emit things to
"std::cerr". Use "errs()" instead. Or, better yet,
"llvm_report_error". :-)
15. Prefer pre-increment/decrement for variables:
http://llvm.org/docs/CodingStandards.html#micro_preincrement
16. In X86RecognizableInsn.cpp, you us...
2009 Aug 19
3
[LLVMdev] X86 Disassembler
...assembler.h is not a good candidate for this,
because the number of instructions could potentially be quite large.
- numberedInstructions in X86DisassemblerEmitter.cpp is not a good
candidate because there are upwards of a thousand instructions in the
x86 table.
- fInstructionSpecifiers in X86DisassemblerTables.h is not a good
candidate either... the number is (again) very large.
- fOperands is not a good candidate because is never actually
created. It is always set to point to CodeGenInstruction::OperandList.
> 8. While we're on that, please use "Instruction" or "Instr" i...
2009 Aug 18
2
[LLVMdev] X86 Disassembler
Dear mailing list:
the attached diff implements a 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
2014 Jan 16
2
[LLVMdev] Some bugs in x86 disasm (llvm-mc)
I believe I have now fixed the 0x64 0xa1 0x00 0x00 0x00 0x00 bug in r199364.
On Wed, Jan 15, 2014 at 10:53 AM, Craig Topper <craig.topper at gmail.com>wrote:
> To fix it we need to change offset8/offset16/etc to have two suboperands
> and update the printer to understand that. Also update the disassembler to
> add the segment to the MCInst when its creating it. When I did these
2012 Jul 10
0
[LLVMdev] question on table gen TIED_TO constraint
I don't think changing to VEX_4VOp3 to VEX_4V is the right fix. I think the
fix is to increment CurOp twice at the start for these instructions so that
only the input operands are used for encoding.
Also, I just submitted a patch to revert the operand order for these
instructions in the assembler/disassembler. Destination register should
appear on the right and the mask should appear on the
2012 Jul 10
2
[LLVMdev] question on table gen TIED_TO constraint
Yes, there is an easy way to fix this.
MRMSrcMem assumes register, memory, vvvv register if VEX_4VOp3 is true and assumes register, vvvv register, memory if VEX_4V is true.
I just need to change the flag from VEX_4VOp3 to VEX_4V. There are a few places where we assume only the 2nd operand can be tied-to:
Desc->getOperandConstraint(1, MCOI::TIED_TO) != -1 (hard-coded index 1)
I will fix those