mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-30 02:25:19 +00:00
Initial ARM/Thumb disassembler check-in. It consists of a tablgen backend
(RISCDisassemblerEmitter) which emits the decoder functions for ARM and Thumb, and the disassembler core which invokes the decoder function and builds up the MCInst based on the decoded Opcode. Added sub-formats to the NeonI/NeonXI instructions to further refine the NEONFrm instructions to help disassembly. We also changed the output of the addressing modes to omit the '+' from the assembler syntax #+/-<imm> or +/-<Rm>. See, for example, A8.6.57/58/60. And modified test cases to not expect '+' in +reg or #+num. For example, ; CHECK: ldr.w r9, [r7, #28] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98637 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -54,26 +54,26 @@ public:
|
||||
void printBitfieldInvMaskImmOperand(const MCInst *MI, unsigned OpNum);
|
||||
|
||||
void printThumbS4ImmOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printThumbITMask(const MCInst *MI, unsigned OpNum) {}
|
||||
void printThumbAddrModeRROperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printThumbITMask(const MCInst *MI, unsigned OpNum);
|
||||
void printThumbAddrModeRROperand(const MCInst *MI, unsigned OpNum);
|
||||
void printThumbAddrModeRI5Operand(const MCInst *MI, unsigned OpNum,
|
||||
unsigned Scale) {}
|
||||
void printThumbAddrModeS1Operand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printThumbAddrModeS2Operand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printThumbAddrModeS4Operand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printThumbAddrModeSPOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
unsigned Scale);
|
||||
void printThumbAddrModeS1Operand(const MCInst *MI, unsigned OpNum);
|
||||
void printThumbAddrModeS2Operand(const MCInst *MI, unsigned OpNum);
|
||||
void printThumbAddrModeS4Operand(const MCInst *MI, unsigned OpNum);
|
||||
void printThumbAddrModeSPOperand(const MCInst *MI, unsigned OpNum);
|
||||
|
||||
void printT2SOOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2AddrModeImm12Operand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2AddrModeImm8Operand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2AddrModeImm8s4Operand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2AddrModeImm8OffsetOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2AddrModeImm8s4OffsetOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2AddrModeSoRegOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printT2SOOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printT2AddrModeImm12Operand(const MCInst *MI, unsigned OpNum);
|
||||
void printT2AddrModeImm8Operand(const MCInst *MI, unsigned OpNum);
|
||||
void printT2AddrModeImm8s4Operand(const MCInst *MI, unsigned OpNum);
|
||||
void printT2AddrModeImm8OffsetOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printT2AddrModeImm8s4OffsetOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printT2AddrModeSoRegOperand(const MCInst *MI, unsigned OpNum);
|
||||
|
||||
void printCPSOptionOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printMSRMaskOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printNegZeroOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printCPSOptionOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printMSRMaskOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printNegZeroOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printPredicateOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printMandatoryPredicateOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printSBitModifierOperand(const MCInst *MI, unsigned OpNum);
|
||||
@@ -82,10 +82,10 @@ public:
|
||||
const char *Modifier);
|
||||
void printJTBlockOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printJT2BlockOperand(const MCInst *MI, unsigned OpNum) {}
|
||||
void printTBAddrMode(const MCInst *MI, unsigned OpNum) {}
|
||||
void printTBAddrMode(const MCInst *MI, unsigned OpNum);
|
||||
void printNoHashImmediate(const MCInst *MI, unsigned OpNum);
|
||||
void printVFPf32ImmOperand(const MCInst *MI, int OpNum) {}
|
||||
void printVFPf64ImmOperand(const MCInst *MI, int OpNum) {}
|
||||
void printVFPf32ImmOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printVFPf64ImmOperand(const MCInst *MI, unsigned OpNum);
|
||||
void printHex8ImmOperand(const MCInst *MI, int OpNum) {}
|
||||
void printHex16ImmOperand(const MCInst *MI, int OpNum) {}
|
||||
void printHex32ImmOperand(const MCInst *MI, int OpNum) {}
|
||||
|
Reference in New Issue
Block a user