X86: Hide the irrelevant portions of the address components for load and store microops.

--HG--
extra : convert_revision : a5ac6fefa09882f0833537e23f1ac0477bc89bb9
This commit is contained in:
Gabe Black 2007-08-01 14:34:59 -07:00
parent 239d124e83
commit 5b5e2fd6cd

View file

@ -64,16 +64,40 @@ namespace X86ISA
const SymbolTable *symtab) const
{
std::stringstream response;
bool someAddr = false;
printMnemonic(response, instMnem, mnemonic);
printDestReg(response, 0, dataSize);
if(flags[IsLoad])
printDestReg(response, 0, dataSize);
else
printSrcReg(response, 2, dataSize);
response << ", ";
printSegment(response, segment);
ccprintf(response, ":[%d*", scale);
printSrcReg(response, 0, addressSize);
response << " + ";
printSrcReg(response, 1, addressSize);
ccprintf(response, " + %#x]", disp);
response << ":[";
if(scale != 0 && _srcRegIdx[0] != ZeroReg)
{
if(scale != 1)
ccprintf(response, "%d*", scale);
printSrcReg(response, 0, addressSize);
someAddr = true;
}
if(_srcRegIdx[1] != ZeroReg)
{
if(someAddr)
response << " + ";
printSrcReg(response, 1, addressSize);
someAddr = true;
}
if(disp != 0)
{
if(someAddr)
response << " + ";
ccprintf(response, "%#x", disp);
someAddr = true;
}
if(!someAddr)
response << "0";
response << "]";
return response.str();
}
}