mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Use uint8_t instead of enums to store values in X86 disassembler table. Shaves 150k off the size of X86DisassemblerDecoder.o
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151995 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b08bb34a6f
commit
991271d9c4
@ -320,7 +320,7 @@ static void translateImmediate(MCInst &mcInst, uint64_t immediate,
|
||||
const MCDisassembler *Dis) {
|
||||
// Sign-extend the immediate if necessary.
|
||||
|
||||
OperandType type = operand.type;
|
||||
OperandType type = (OperandType)operand.type;
|
||||
|
||||
if (type == TYPE_RELv) {
|
||||
switch (insn.displacementSize) {
|
||||
|
@ -343,8 +343,8 @@ typedef enum {
|
||||
* operand.
|
||||
*/
|
||||
struct OperandSpecifier {
|
||||
OperandEncoding encoding;
|
||||
OperandType type;
|
||||
uint8_t encoding;
|
||||
uint8_t type;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -371,7 +371,7 @@ typedef enum {
|
||||
* its operands.
|
||||
*/
|
||||
struct InstructionSpecifier {
|
||||
ModifierType modifierType;
|
||||
uint8_t modifierType;
|
||||
uint8_t modifierBase;
|
||||
struct OperandSpecifier operands[X86_MAX_OPERANDS];
|
||||
|
||||
|
@ -457,11 +457,11 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o, uint32_t &i)
|
||||
for (index = 0; index < numInstructions; ++index) {
|
||||
o.indent(i * 2) << "{ /* " << index << " */" << "\n";
|
||||
i++;
|
||||
|
||||
o.indent(i * 2) <<
|
||||
stringForModifierType(InstructionSpecifiers[index].modifierType);
|
||||
|
||||
o.indent(i * 2) << stringForModifierType(
|
||||
(ModifierType)InstructionSpecifiers[index].modifierType);
|
||||
o << "," << "\n";
|
||||
|
||||
|
||||
o.indent(i * 2) << "0x";
|
||||
o << format("%02hhx", (uint16_t)InstructionSpecifiers[index].modifierBase);
|
||||
o << "," << "\n";
|
||||
@ -471,11 +471,11 @@ void DisassemblerTables::emitInstructionInfo(raw_ostream &o, uint32_t &i)
|
||||
|
||||
for (operandIndex = 0; operandIndex < X86_MAX_OPERANDS; ++operandIndex) {
|
||||
o.indent(i * 2) << "{ ";
|
||||
o << stringForOperandEncoding(InstructionSpecifiers[index]
|
||||
.operands[operandIndex]
|
||||
.encoding);
|
||||
o <<stringForOperandEncoding((OperandEncoding)InstructionSpecifiers[index]
|
||||
.operands[operandIndex]
|
||||
.encoding);
|
||||
o << ", ";
|
||||
o << stringForOperandType(InstructionSpecifiers[index]
|
||||
o << stringForOperandType((OperandType)InstructionSpecifiers[index]
|
||||
.operands[operandIndex]
|
||||
.type);
|
||||
o << " }";
|
||||
|
Loading…
x
Reference in New Issue
Block a user