mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Enhance the fixed-length disassembler to support the callbacks necessary for symbolic disassembly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129708 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
43c361ff2e
commit
57557155c9
@ -611,7 +611,8 @@ void FilterChooser::emitTop(raw_ostream &o, unsigned Indentation) {
|
||||
o << '\n';
|
||||
|
||||
o.indent(Indentation) <<
|
||||
"static bool decodeInstruction(MCInst &MI, field_t insn) {\n";
|
||||
"static bool decodeInstruction(MCInst &MI, field_t insn, "
|
||||
"uint64_t Address, const void *Decoder) {\n";
|
||||
o.indent(Indentation) << " unsigned tmp = 0;\n";
|
||||
|
||||
++Indentation; ++Indentation;
|
||||
@ -795,7 +796,8 @@ bool FilterChooser::emitSingletonDecoder(raw_ostream &o, unsigned &Indentation,
|
||||
I = InsnOperands.begin(), E = InsnOperands.end(); I != E; ++I) {
|
||||
// If a custom instruction decoder was specified, use that.
|
||||
if (I->FieldBase == ~0U && I->FieldLength == ~0U) {
|
||||
o.indent(Indentation) << " " << I->Decoder << "(MI, insn);\n";
|
||||
o.indent(Indentation) << " " << I->Decoder
|
||||
<< "(MI, insn, Address, Decoder);\n";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -803,7 +805,8 @@ bool FilterChooser::emitSingletonDecoder(raw_ostream &o, unsigned &Indentation,
|
||||
<< " tmp = fieldFromInstruction(insn, " << I->FieldBase
|
||||
<< ", " << I->FieldLength << ");\n";
|
||||
if (I->Decoder != "") {
|
||||
o.indent(Indentation) << " " << I->Decoder << "(MI, tmp);\n";
|
||||
o.indent(Indentation) << " " << I->Decoder
|
||||
<< "(MI, tmp, Address, Decoder);\n";
|
||||
} else {
|
||||
o.indent(Indentation)
|
||||
<< " MI.addOperand(MCOperand::CreateImm(tmp));\n";
|
||||
@ -846,7 +849,8 @@ bool FilterChooser::emitSingletonDecoder(raw_ostream &o, unsigned &Indentation,
|
||||
I = InsnOperands.begin(), E = InsnOperands.end(); I != E; ++I) {
|
||||
// If a custom instruction decoder was specified, use that.
|
||||
if (I->FieldBase == ~0U && I->FieldLength == ~0U) {
|
||||
o.indent(Indentation) << " " << I->Decoder << "(MI, insn);\n";
|
||||
o.indent(Indentation) << " " << I->Decoder
|
||||
<< "(MI, insn, Address, Decoder);\n";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -854,7 +858,8 @@ bool FilterChooser::emitSingletonDecoder(raw_ostream &o, unsigned &Indentation,
|
||||
<< " tmp = fieldFromInstruction(insn, " << I->FieldBase
|
||||
<< ", " << I->FieldLength << ");\n";
|
||||
if (I->Decoder != "") {
|
||||
o.indent(Indentation) << " " << I->Decoder << "(MI, tmp);\n";
|
||||
o.indent(Indentation) << " " << I->Decoder
|
||||
<< "(MI, tmp, Address, Decoder);\n";
|
||||
} else {
|
||||
o.indent(Indentation)
|
||||
<< " MI.addOperand(MCOperand::CreateImm(tmp));\n";
|
||||
|
Loading…
x
Reference in New Issue
Block a user