summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-03-04 15:53:28 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2024-03-15 15:12:50 -0400
commit7ba5163f45803debbbc496d2981343a5ffa8a172 (patch)
treec251f4ebc5e58a8cc55382cb7a5afc1222e59d16 /arch
parentf0b152f29e3b0da7224ea18a0dfb9892a87660f6 (diff)
Separate local variable tokens in higher level ILs from stack variable tokens in lower levels, and improve token usage in disassembly
Diffstat (limited to 'arch')
-rw-r--r--arch/arm64/arch_arm64.cpp64
-rw-r--r--arch/armv7/arch_armv7.cpp116
-rw-r--r--arch/mips/arch_mips.cpp8
-rw-r--r--arch/powerpc/arch_ppc.cpp26
-rw-r--r--arch/riscv/src/lib.rs4
-rw-r--r--arch/x86/arch_x86.cpp142
6 files changed, 196 insertions, 164 deletions
diff --git a/arch/arm64/arch_arm64.cpp b/arch/arm64/arch_arm64.cpp
index d0a4c38e..ffa05fe8 100644
--- a/arch/arm64/arch_arm64.cpp
+++ b/arch/arm64/arch_arm64.cpp
@@ -429,7 +429,7 @@ class Arm64Architecture : public Architecture
{
char buf[64] = {0};
snprintf(buf, sizeof(buf), "%#x", (uint32_t)operand->shiftValue);
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
result.emplace_back(IntegerToken, buf, operand->shiftValue);
}
}
@@ -463,18 +463,18 @@ class Arm64Architecture : public Architecture
} f;
f.intValue = (uint32_t)operand->immediate;
snprintf(buf, sizeof(buf), "%.08f", f.floatValue);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(FloatingPointToken, buf);
break;
}
case IMM32:
snprintf(buf, sizeof(buf), "%s%#x", sign, (uint32_t)imm);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, buf, operand->immediate);
break;
case IMM64:
snprintf(buf, sizeof(buf), "%s%#" PRIx64, sign, imm);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, buf, operand->immediate);
break;
case LABEL:
@@ -548,9 +548,9 @@ class Arm64Architecture : public Architecture
if (operand->operandClass == REG && operand->laneUsed)
{
snprintf(buf, sizeof(buf), "%u", operand->lane);
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
result.emplace_back(IntegerToken, buf);
- result.emplace_back(TextToken, "]");
+ result.emplace_back(BraceToken, "]");
}
return DISASM_SUCCESS;
@@ -576,8 +576,9 @@ class Arm64Architecture : public Architecture
imm = -imm;
}
const char* startToken = "[";
- const char* endToken = "]";
- result.emplace_back(BeginMemoryOperandToken, startToken);
+ const char* endToken = "";
+ result.emplace_back(BraceToken, startToken);
+ result.emplace_back(BeginMemoryOperandToken, "");
result.emplace_back(RegisterToken, reg0);
result.emplace_back(TextToken, get_register_arrspec(operand->reg[0], operand));
@@ -586,9 +587,10 @@ class Arm64Architecture : public Architecture
case MEM_REG:
break;
case MEM_PRE_IDX:
- endToken = "]!";
+ endToken = "!";
snprintf(immBuff, sizeof(immBuff), "%s%#" PRIx64, sign, (uint64_t)imm);
- result.emplace_back(TextToken, ", #");
+ result.emplace_back(TextToken, ", ");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, immBuff, operand->immediate);
break;
case MEM_POST_IDX: // [<reg>], <reg|imm>
@@ -596,7 +598,10 @@ class Arm64Architecture : public Architecture
if (operand->reg[1] == REG_NONE)
{
snprintf(paramBuff, sizeof(paramBuff), "%s%#" PRIx64, sign, (uint64_t)imm);
- result.emplace_back(EndMemoryOperandToken, "], #");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(TextToken, ", ");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, paramBuff, operand->immediate);
}
else
@@ -604,7 +609,9 @@ class Arm64Architecture : public Architecture
reg1 = get_register_name(operand->reg[1]);
if (EMPTY(reg1))
return FAILED_TO_DISASSEMBLE_REGISTER;
- result.emplace_back(EndMemoryOperandToken, "], ");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(TextToken, ", ");
result.emplace_back(RegisterToken, reg1);
result.emplace_back(TextToken, get_register_arrspec(operand->reg[1], operand));
}
@@ -613,7 +620,8 @@ class Arm64Architecture : public Architecture
if (operand->immediate != 0)
{
snprintf(immBuff, sizeof(immBuff), "%s%#" PRIx64, sign, (uint64_t)imm);
- result.emplace_back(TextToken, ", #");
+ result.emplace_back(TextToken, ", ");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, immBuff, operand->immediate);
if (operand->mul_vl)
@@ -633,7 +641,11 @@ class Arm64Architecture : public Architecture
return NOT_MEMORY_OPERAND;
}
if (endToken != NULL)
- result.emplace_back(EndMemoryOperandToken, endToken);
+ {
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(TextToken, endToken);
+ }
return DISASM_SUCCESS;
}
@@ -657,10 +669,10 @@ class Arm64Architecture : public Architecture
if (operand->laneUsed)
{
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
snprintf(index, sizeof(index), "%d", operand->lane);
result.emplace_back(IntegerToken, index, operand->lane);
- result.emplace_back(TextToken, "]");
+ result.emplace_back(BraceToken, "]");
}
return DISASM_SUCCESS;
}
@@ -838,21 +850,21 @@ class Arm64Architecture : public Architecture
break;
case STR_IMM: /* eg: "mul #0xe" */
result.emplace_back(TextToken, instr.operands[i].name);
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
snprintf(buf, sizeof(buf), "0x%" PRIx64, instr.operands[i].immediate);
result.emplace_back(IntegerToken, buf);
tokenizeSuccess = true;
break;
case ACCUM_ARRAY: /* eg: "za[w12, #0x6]" */
result.emplace_back(TextToken, "ZA");
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
snprintf(buf, sizeof(buf), "%s", get_register_name(operand->reg[0]));
result.emplace_back(RegisterToken, buf);
result.emplace_back(OperandSeparatorToken, ", ");
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
snprintf(buf, sizeof(buf), "0x%" PRIx64, operand->immediate);
result.emplace_back(IntegerToken, buf);
- result.emplace_back(TextToken, "]");
+ result.emplace_back(BraceToken, "]");
tokenizeSuccess = true;
break;
case SME_TILE: /* eg: "z0v.b[w12, #0xb]" */
@@ -865,33 +877,33 @@ class Arm64Architecture : public Architecture
result.emplace_back(TextToken, get_arrspec_str_truncated(operand->arrSpec));
if (operand->reg[0] != REG_NONE)
{
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
snprintf(buf, sizeof(buf), "%s", get_register_name(operand->reg[0]));
result.emplace_back(RegisterToken, buf);
if (operand->arrSpec != ARRSPEC_FULL)
{
result.emplace_back(OperandSeparatorToken, ", ");
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
snprintf(buf, sizeof(buf), "0x%" PRIx64, instr.operands[i].immediate);
result.emplace_back(IntegerToken, buf);
}
- result.emplace_back(TextToken, "]");
+ result.emplace_back(BraceToken, "]");
}
tokenizeSuccess = true;
break;
case INDEXED_ELEMENT: /* eg: "p12.d[w15, #0xf]" */
result.emplace_back(RegisterToken, get_register_name(operand->reg[0]));
result.emplace_back(TextToken, get_arrspec_str_truncated(operand->arrSpec));
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
result.emplace_back(RegisterToken, get_register_name(operand->reg[1]));
if (operand->immediate)
{
result.emplace_back(OperandSeparatorToken, ", ");
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
snprintf(buf, sizeof(buf), "0x%" PRIx64, operand->immediate);
result.emplace_back(IntegerToken, buf);
}
- result.emplace_back(TextToken, "]");
+ result.emplace_back(BraceToken, "]");
tokenizeSuccess = true;
break;
default:
diff --git a/arch/armv7/arch_armv7.cpp b/arch/armv7/arch_armv7.cpp
index aa983518..d14641d8 100644
--- a/arch/armv7/arch_armv7.cpp
+++ b/arch/armv7/arch_armv7.cpp
@@ -831,9 +831,9 @@ protected:
return FAILED_TO_DISASSEMBLE_OPERAND;
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, shiftStr);
+ result.emplace_back(KeywordToken, shiftStr);
snprintf(operand, sizeof(operand), "%#x", (uint32_t)op.imm);
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
result.emplace_back(IntegerToken, operand, op.imm);
}
return DISASM_SUCCESS;
@@ -847,27 +847,23 @@ protected:
{
case FIMM16:
case FIMM32:
- {
snprintf(operand, sizeof(operand), "%f", op.immf);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(FloatingPointToken, operand);
break;
- }
case FIMM64:
- {
snprintf(operand, sizeof(operand), "%e", op.immd);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(FloatingPointToken, operand);
break;
- }
case IMM:
snprintf(operand, sizeof(operand), "%s%#x", sign, (uint32_t)op.imm);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, operand, op.imm);
break;
case IMM64:
snprintf(operand, sizeof(operand), "%s%#" PRIx64, sign, op.imm64);
- result.emplace_back(TextToken, "#");
+ result.emplace_back(OperationToken, "#");
result.emplace_back(IntegerToken, operand, op.imm64);
break;
case LABEL:
@@ -1110,7 +1106,7 @@ public:
{
char operand[32];
snprintf(operand, sizeof(operand), "%#x", (uint32_t)op.imm);
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
result.emplace_back(IntegerToken, operand, op.imm);
}
@@ -1119,7 +1115,7 @@ public:
char operand[32];
const char* neg[2] = {"-", ""};
snprintf(operand, sizeof(operand), "%s%#x", neg[op.flags.add == 1], (uint32_t)op.imm);
- result.emplace_back(TextToken, " #");
+ result.emplace_back(OperationToken, " #");
result.emplace_back(IntegerToken, operand, op.imm);
}
@@ -1175,22 +1171,22 @@ public:
break;
case REG:
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].reg));
- result.emplace_back(TextToken, wb[instr.operands[i].flags.wb]);
+ result.emplace_back(OperationToken, wb[instr.operands[i].flags.wb]);
if (instr.operands[i].shift == SHIFT_NONE)
{
if (instr.operands[i].flags.hasElements == 1)
{
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
snprintf(tmpOperand, sizeof(tmpOperand), "%d", instr.operands[i].imm);
result.emplace_back(IntegerToken, tmpOperand, instr.operands[i].imm);
- result.emplace_back(TextToken, "]");
+ result.emplace_back(BraceToken, "]");
}
}
else if (instr.operands[i].flags.offsetRegUsed == 1)
{
//Register shifted by register
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(KeywordToken, get_shift(instr.operands[i].shift));
result.emplace_back(TextToken, " ");
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
}
@@ -1198,7 +1194,7 @@ public:
{
//Register shifted by constant
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(KeywordToken, get_shift(instr.operands[i].shift));
if (instr.operands[i].shift != SHIFT_RRX)
{
result.emplace_back(TextToken, " ");
@@ -1210,7 +1206,7 @@ public:
case REG_LIST_SINGLE:
case REG_LIST_DOUBLE:
{
- result.emplace_back(TextToken, "{");
+ result.emplace_back(BraceToken, "{");
first = true;
uint32_t base = 0;
if (instr.operands[i].cls == REG_LIST_SINGLE)
@@ -1228,70 +1224,77 @@ public:
first = false;
}
}
- result.emplace_back(TextToken, "}");
- result.emplace_back(TextToken, crt[instr.operands[i].flags.wb]);
+ result.emplace_back(BraceToken, "}");
+ result.emplace_back(OperationToken, crt[instr.operands[i].flags.wb]);
}
break;
case REG_SPEC:
- result.emplace_back(TextToken, get_spec_register_name(instr.operands[i].regs));
+ result.emplace_back(RegisterToken, get_spec_register_name(instr.operands[i].regs));
break;
case REG_BANKED:
- result.emplace_back(TextToken, get_banked_register_name(instr.operands[i].regb));
+ result.emplace_back(RegisterToken, get_banked_register_name(instr.operands[i].regb));
break;
case REG_COPROCP:
- result.emplace_back(TextToken, get_coproc_register_p_name(instr.operands[i].regp));
+ result.emplace_back(RegisterToken, get_coproc_register_p_name(instr.operands[i].regp));
break;
case REG_COPROCC:
- result.emplace_back(TextToken, get_coproc_register_c_name(instr.operands[i].regc));
+ result.emplace_back(RegisterToken, get_coproc_register_c_name(instr.operands[i].regc));
break;
case IFLAGS:
- result.emplace_back(TextToken, get_iflag(instr.operands[i].iflag));
+ result.emplace_back(KeywordToken, get_iflag(instr.operands[i].iflag));
break;
- case ENDIAN_SPEC:
- result.emplace_back(TextToken, get_endian(instr.operands[i].endian));
+ case ENDIAN_SPEC:
+ result.emplace_back(KeywordToken, get_endian(instr.operands[i].endian));
break;
case DSB_OPTION:
- result.emplace_back(TextToken, get_dsb_option(instr.operands[i].dsbOpt));
+ result.emplace_back(KeywordToken, get_dsb_option(instr.operands[i].dsbOpt));
break;
case MEM_ALIGNED:
- result.emplace_back(BeginMemoryOperandToken, "[");
+ result.emplace_back(BraceToken, "[");
+ result.emplace_back(BeginMemoryOperandToken, "");
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].reg));
if (instr.operands[i].imm != 0)
{
- result.emplace_back(TextToken, ":0x");
- snprintf(tmpOperand, sizeof(tmpOperand), ":%#x", instr.operands[i].imm);
+ result.emplace_back(OperationToken, ":");
+ snprintf(tmpOperand, sizeof(tmpOperand), "%#x", instr.operands[i].imm);
result.emplace_back(IntegerToken, tmpOperand, instr.operands[i].imm);
}
- result.emplace_back(EndMemoryOperandToken, "]");
- result.emplace_back(TextToken, wb[instr.operands[i].flags.wb]);
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(OperationToken, wb[instr.operands[i].flags.wb]);
break;
case MEM_OPTION:
- result.emplace_back(BeginMemoryOperandToken, "[");
+ result.emplace_back(BraceToken, "[");
+ result.emplace_back(BeginMemoryOperandToken, "");
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].reg));
- result.emplace_back(EndMemoryOperandToken, "], {");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(TextToken, ", ");
+ result.emplace_back(BraceToken, "{");
GetImmToken(instr.operands[i], result);
- result.emplace_back(TextToken, "}");
+ result.emplace_back(BraceToken, "}");
break;
case MEM_PRE_IDX:
- result.emplace_back(BeginMemoryOperandToken, "[");
+ result.emplace_back(BraceToken, "[");
+ result.emplace_back(BeginMemoryOperandToken, "");
if (instr.operands[i].flags.offsetRegUsed == 1)
{
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].reg));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, neg[instr.operands[i].flags.add == 1]);
+ result.emplace_back(OperationToken, neg[instr.operands[i].flags.add == 1]);
if (instr.operands[i].imm == 0)
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
else if (instr.operands[i].shift == SHIFT_RRX)
{
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(OperationToken, get_shift(instr.operands[i].shift));
}
else
{
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(OperationToken, get_shift(instr.operands[i].shift));
result.emplace_back(TextToken, " ");
GetImmToken(instr.operands[i], result);
}
@@ -1302,29 +1305,34 @@ public:
result.emplace_back(TextToken, ", ");
GetSignedImmToken(instr.operands[i], result);
}
- result.emplace_back(EndMemoryOperandToken, "]!");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(OperationToken, "!");
break;
break;
case MEM_POST_IDX:
- result.emplace_back(BeginMemoryOperandToken, "[");
+ result.emplace_back(BraceToken, "[");
+ result.emplace_back(BeginMemoryOperandToken, "");
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].reg));
- result.emplace_back(EndMemoryOperandToken, "], ");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
+ result.emplace_back(TextToken, ", ");
if (instr.operands[i].flags.offsetRegUsed == 1)
{
- result.emplace_back(TextToken, neg[instr.operands[i].flags.add == 1]);
+ result.emplace_back(OperationToken, neg[instr.operands[i].flags.add == 1]);
if (instr.operands[i].imm == 0)
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
else if (instr.operands[i].shift == SHIFT_RRX)
{
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(OperationToken, get_shift(instr.operands[i].shift));
}
else
{
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(OperationToken, get_shift(instr.operands[i].shift));
result.emplace_back(TextToken, " ");
GetImmToken(instr.operands[i], result);
}
@@ -1335,7 +1343,8 @@ public:
}
break;
case MEM_IMM:
- result.emplace_back(BeginMemoryOperandToken, "[");
+ result.emplace_back(BraceToken, "[");
+ result.emplace_back(BeginMemoryOperandToken, "");
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].reg));
switch (instr.operands[i].shift)
{
@@ -1343,7 +1352,7 @@ public:
if (instr.operands[i].flags.offsetRegUsed == 1)
{
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, neg[instr.operands[i].flags.add == 1]);
+ result.emplace_back(OperationToken, neg[instr.operands[i].flags.add == 1]);
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
}
else if (instr.operands[i].imm != 0)// || instr.operands[i].flags.add == 0)
@@ -1354,21 +1363,22 @@ public:
break;
case SHIFT_RRX:
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, neg[instr.operands[i].flags.add == 1]);
+ result.emplace_back(OperationToken, neg[instr.operands[i].flags.add == 1]);
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(OperationToken, get_shift(instr.operands[i].shift));
break;
default:
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, neg[instr.operands[i].flags.add == 1]);
+ result.emplace_back(OperationToken, neg[instr.operands[i].flags.add == 1]);
result.emplace_back(RegisterToken, GetRegisterName(instr.operands[i].offset));
result.emplace_back(TextToken, ", ");
- result.emplace_back(TextToken, get_shift(instr.operands[i].shift));
+ result.emplace_back(OperationToken, get_shift(instr.operands[i].shift));
result.emplace_back(TextToken, " ");
GetImmToken(instr.operands[i], result);
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
default:
LogError("operandClass %d\n", instr.operands[i].cls);
diff --git a/arch/mips/arch_mips.cpp b/arch/mips/arch_mips.cpp
index 0d01862d..77de378f 100644
--- a/arch/mips/arch_mips.cpp
+++ b/arch/mips/arch_mips.cpp
@@ -763,12 +763,12 @@ public:
}
if (instr.operands[i].reg == REG_ZERO)
break;
- result.emplace_back(TextToken, "(");
+ result.emplace_back(BraceToken, "(");
reg = get_register((Reg)instr.operands[i].reg);
if (reg == NULL)
return false;
result.emplace_back(RegisterToken, reg);
- result.emplace_back(TextToken, ")");
+ result.emplace_back(BraceToken, ")");
result.emplace_back(EndMemoryOperandToken, "");
break;
case MEM_REG:
@@ -777,13 +777,13 @@ public:
if (reg == NULL)
return false;
result.emplace_back(RegisterToken, reg);
- result.emplace_back(TextToken, "(");
+ result.emplace_back(BraceToken, "(");
reg = get_register((Reg)instr.operands[i].reg);
if (reg == NULL)
return false;
result.emplace_back(RegisterToken, reg);
- result.emplace_back(TextToken, ")");
+ result.emplace_back(BraceToken, ")");
result.emplace_back(EndMemoryOperandToken, "");
break;
default:
diff --git a/arch/powerpc/arch_ppc.cpp b/arch/powerpc/arch_ppc.cpp
index 6366db16..2f657b7a 100644
--- a/arch/powerpc/arch_ppc.cpp
+++ b/arch/powerpc/arch_ppc.cpp
@@ -500,7 +500,7 @@ class PowerpcArchitecture: public Architecture
// 111111AAA00BBBBBCCCCC00001000000 "fcmpo crA,fB,fC"
uint32_t tmp = insword & 0xFC6007FF;
if (tmp==0xFC000040) {
- result.emplace_back(TextToken, "fcmpo");
+ result.emplace_back(InstructionToken, "fcmpo");
result.emplace_back(TextToken, " ");
snprintf(buf, sizeof(buf), "cr%d", (insword >> 23) & 7);
result.emplace_back(RegisterToken, buf);
@@ -518,7 +518,7 @@ class PowerpcArchitecture: public Architecture
int a = ((insword & 0x3E00000)>>21)|((insword & 0x1)<<5);
int b = ((insword & 0x1F0000)>>16)|((insword & 0x4)<<3);
int c = ((insword & 0xF800)>>11)|((insword & 0x2)<<4);
- result.emplace_back(TextToken, "xxpermr");
+ result.emplace_back(InstructionToken, "xxpermr");
result.emplace_back(TextToken, " ");
snprintf(buf, sizeof(buf), "vs%d", a);
result.emplace_back(RegisterToken, buf);
@@ -539,16 +539,16 @@ class PowerpcArchitecture: public Architecture
if (tmp==0x1000000C || tmp==0x1000000E || tmp==0x1000004C || tmp==0x1000004E) {
switch(tmp) {
case 0x1000000C:
- result.emplace_back(TextToken, "psq_lx");
+ result.emplace_back(InstructionToken, "psq_lx");
result.emplace_back(TextToken, " ");
break;
- case 0x1000000E: result.emplace_back(TextToken, "psq_stx");
+ case 0x1000000E: result.emplace_back(InstructionToken, "psq_stx");
result.emplace_back(TextToken, " ");
break;
- case 0x1000004C: result.emplace_back(TextToken, "psq_lux");
+ case 0x1000004C: result.emplace_back(InstructionToken, "psq_lux");
result.emplace_back(TextToken, " ");
break;
- case 0x1000004E: result.emplace_back(TextToken, "psq_stux");
+ case 0x1000004E: result.emplace_back(InstructionToken, "psq_stux");
result.emplace_back(TextToken, " ");
break;
}
@@ -578,10 +578,10 @@ class PowerpcArchitecture: public Architecture
tmp = insword & 0xFC00F83F;
if (tmp==0x10000018 || tmp==0x10000019 || tmp==0x1000001A || tmp==0x1000001B) {
switch(tmp) {
- case 0x10000018: result.emplace_back(TextToken, "ps_muls0"); break;
- case 0x10000019: result.emplace_back(TextToken, "ps_muls0."); break;
- case 0x1000001A: result.emplace_back(TextToken, "ps_muls1"); break;
- case 0x1000001B: result.emplace_back(TextToken, "ps_muls1."); break;
+ case 0x10000018: result.emplace_back(InstructionToken, "ps_muls0"); break;
+ case 0x10000019: result.emplace_back(InstructionToken, "ps_muls0."); break;
+ case 0x1000001A: result.emplace_back(InstructionToken, "ps_muls1"); break;
+ case 0x1000001B: result.emplace_back(InstructionToken, "ps_muls1."); break;
}
result.emplace_back(TextToken, " ");
snprintf(buf, sizeof(buf), "f%d", (insword & 0x3E00000) >> 21);
@@ -664,7 +664,7 @@ class PowerpcArchitecture: public Architecture
case PPC_OP_REG:
//MYLOG("pushing a register\n");
if (capstoneWorkaround || (insn->id == PPC_INS_ISEL && i == 3))
- result.emplace_back(TextToken, GetFlagName(op->reg - PPC_REG_R0));
+ result.emplace_back(RegisterToken, GetFlagName(op->reg - PPC_REG_R0));
else
result.emplace_back(RegisterToken, GetRegisterName(op->reg));
break;
@@ -703,9 +703,9 @@ class PowerpcArchitecture: public Architecture
snprintf(buf, sizeof(buf), "%d", op->mem.disp);
result.emplace_back(IntegerToken, buf, op->mem.disp, 4);
- result.emplace_back(TextToken, "(");
+ result.emplace_back(BraceToken, "(");
result.emplace_back(RegisterToken, GetRegisterName(op->mem.base));
- result.emplace_back(TextToken, ")");
+ result.emplace_back(BraceToken, ")");
break;
case PPC_OP_CRX:
case PPC_OP_INVALID:
diff --git a/arch/riscv/src/lib.rs b/arch/riscv/src/lib.rs
index 8b9fde31..6b3451a9 100644
--- a/arch/riscv/src/lib.rs
+++ b/arch/riscv/src/lib.rs
@@ -1031,12 +1031,12 @@ impl<D: 'static + RiscVDisassembler + Send + Sync> architecture::Architecture fo
Integer(i as u64),
));
- res.push(InstructionTextToken::new(BnString::new("("), Text));
+ res.push(InstructionTextToken::new(BnString::new("("), Brace));
res.push(InstructionTextToken::new(
BnString::new(&reg.name()),
Register,
));
- res.push(InstructionTextToken::new(BnString::new(")"), Text));
+ res.push(InstructionTextToken::new(BnString::new(")"), Brace));
res.push(InstructionTextToken::new(
BnString::new(""),
EndMemoryOperand,
diff --git a/arch/x86/arch_x86.cpp b/arch/x86/arch_x86.cpp
index 94cf31d5..cddce41d 100644
--- a/arch/x86/arch_x86.cpp
+++ b/arch/x86/arch_x86.cpp
@@ -548,55 +548,56 @@ BNRegisterInfo X86CommonArchitecture::RegisterInfo(xed_reg_enum_t fullWidthReg,
void X86CommonArchitecture::GetAddressSizeToken(const short bytes, vector<InstructionTextToken>& result, const bool lowerCase)
{
// Size
+ result.emplace_back(BeginMemoryOperandToken, "");
switch (bytes)
{
case 1:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"byte ");
+ result.emplace_back(KeywordToken, "byte ");
else
- result.emplace_back(BeginMemoryOperandToken,"BYTE ");
+ result.emplace_back(KeywordToken, "BYTE ");
break;
case 2:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"word ");
+ result.emplace_back(KeywordToken, "word ");
else
- result.emplace_back(BeginMemoryOperandToken,"WORD ");
+ result.emplace_back(KeywordToken, "WORD ");
break;
case 4:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"dword ");
+ result.emplace_back(KeywordToken, "dword ");
else
- result.emplace_back(BeginMemoryOperandToken,"DWORD ");
+ result.emplace_back(KeywordToken, "DWORD ");
break;
case 8:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"qword ");
+ result.emplace_back(KeywordToken, "qword ");
else
- result.emplace_back(BeginMemoryOperandToken,"QWORD ");
+ result.emplace_back(KeywordToken, "QWORD ");
break;
case 10:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"tword ");
+ result.emplace_back(KeywordToken, "tword ");
else
- result.emplace_back(BeginMemoryOperandToken,"TWORD ");
+ result.emplace_back(KeywordToken, "TWORD ");
break;
case 16:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"xmmword ");
+ result.emplace_back(KeywordToken, "xmmword ");
else
- result.emplace_back(BeginMemoryOperandToken,"XMMWORD ");
+ result.emplace_back(KeywordToken, "XMMWORD ");
break;
case 32:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"ymmword ");
+ result.emplace_back(KeywordToken, "ymmword ");
else
- result.emplace_back(BeginMemoryOperandToken,"YMMWORD ");
+ result.emplace_back(KeywordToken, "YMMWORD ");
break;
case 64:
if (lowerCase)
- result.emplace_back(BeginMemoryOperandToken,"zmmword ");
+ result.emplace_back(KeywordToken, "zmmword ");
else
- result.emplace_back(BeginMemoryOperandToken,"ZMMWORD ");
+ result.emplace_back(KeywordToken, "ZMMWORD ");
break;
default:
break;
@@ -808,10 +809,10 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
GetAddressSizeToken(xed_decoded_inst_operand_length_bits(xedd, opIndex) / 8, result, m_disassembly_options.lowerCase);
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, "ptr ");
+ result.emplace_back(KeywordToken, "ptr ");
else
- result.emplace_back(TextToken, "PTR ");
- result.emplace_back(TextToken, "[");
+ result.emplace_back(KeywordToken, "PTR ");
+ result.emplace_back(BraceToken, "[");
// Segment
const xed_reg_enum_t seg = xed_decoded_inst_get_seg_reg(xedd, 0);
@@ -823,7 +824,7 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
for (char& c : seg_str)
c = tolower(c);
result.emplace_back(RegisterToken, seg_str);
- result.emplace_back(TextToken, ":");
+ result.emplace_back(OperationToken, ":");
}
bool started = false;
@@ -855,7 +856,8 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
result.emplace_back(CodeRelativeAddressToken, sstream.str(), disp, GetAddressSize());
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -871,7 +873,7 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
else // normal path
{
if (started)
- result.emplace_back(TextToken, "+");
+ result.emplace_back(OperationToken, "+");
started = true;
string index_str(xed_reg_enum_t2str(index));
@@ -884,7 +886,7 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
const unsigned int scale = xed_decoded_inst_get_scale(xedd, 0);
if (scale != 1)
{
- result.emplace_back(TextToken, "*");
+ result.emplace_back(OperationToken, "*");
stringstream sstream;
sstream << scale;
result.emplace_back(IntegerToken, sstream.str(), scale, 1);
@@ -908,11 +910,11 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
{
if (disp < 0)
{
- result.emplace_back(TextToken, "-");
+ result.emplace_back(OperationToken, "-");
disp = -disp;
}
else
- result.emplace_back(TextToken, "+");
+ result.emplace_back(OperationToken, "+");
if (disp_bytes == 2)
sstream << (uint16_t)disp;
@@ -939,7 +941,8 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
{
result.emplace_back(IntegerToken, "0x0", disp, GetAddressSize());
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -948,9 +951,9 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
GetAddressSizeToken(xed_decoded_inst_operand_length_bits(xedd, opIndex) / 8, result, m_disassembly_options.lowerCase);
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, "ptr ");
+ result.emplace_back(KeywordToken, "ptr ");
else
- result.emplace_back(TextToken, "PTR ");
+ result.emplace_back(KeywordToken, "PTR ");
// Segment
const xed_reg_enum_t seg = xed_decoded_inst_get_seg_reg(xedd, 1);
@@ -962,10 +965,10 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
c = tolower(c);
result.emplace_back(RegisterToken, seg_str);
- result.emplace_back(TextToken, ":");
+ result.emplace_back(OperationToken, ":");
}
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
const xed_reg_enum_t base = xed_decoded_inst_get_base_reg(xedd, 1);
if (base != XED_REG_INVALID)
{
@@ -975,7 +978,8 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
c = tolower(c);
result.emplace_back(RegisterToken, base_str);
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1075,7 +1079,7 @@ void X86CommonArchitecture::GetOperandTextIntel(const xed_decoded_inst_t* const
}
default:
{
- result.emplace_back(TextToken, "unimplimented");
+ result.emplace_back(KeywordToken, "unimplemented");
} // default case of outer switch
} // outer switch
@@ -1166,9 +1170,9 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
if(xed_decoded_inst_zeroing(xedd))
{
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, " {z}");
+ result.emplace_back(OperationToken, " {z}");
else
- result.emplace_back(TextToken, " {Z}");
+ result.emplace_back(OperationToken, " {Z}");
}
}
@@ -1181,7 +1185,7 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
if (xed_inst_iclass(xi) != XED_ICLASS_LEA)
GetAddressSizeToken(xed_decoded_inst_operand_length_bits(xedd, opIndex) / 8, result, m_disassembly_options.lowerCase);
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
// Segment
const xed_reg_enum_t seg = xed_decoded_inst_get_seg_reg(xedd, 0);
const bool validSegment = (seg != XED_REG_INVALID && !xed_operand_values_using_default_segment(ov, 0));
@@ -1192,7 +1196,7 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
for (char& c : seg_str)
c = tolower(c);
result.emplace_back(RegisterToken, seg_str);
- result.emplace_back(TextToken, ":");
+ result.emplace_back(OperationToken, ":");
}
bool started = false;
@@ -1212,9 +1216,9 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
else if ((base == XED_REG_RIP) || (base == XED_REG_EIP) || (base == XED_REG_IP))
{
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, "rel ");
+ result.emplace_back(KeywordToken, "rel ");
else
- result.emplace_back(TextToken, "REL ");
+ result.emplace_back(KeywordToken, "REL ");
if (xed_operand_values_has_memory_displacement(ov))
disp += addr + len;
@@ -1229,7 +1233,8 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
result.emplace_back(CodeRelativeAddressToken, sstream.str(), disp, GetAddressSize());
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1245,7 +1250,7 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
else // normal path
{
if (started)
- result.emplace_back(TextToken, "+");
+ result.emplace_back(OperationToken, "+");
started = true;
string index_str(xed_reg_enum_t2str(index));
@@ -1258,7 +1263,7 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
const unsigned int scale = xed_decoded_inst_get_scale(xedd, 0);
if (scale != 1)
{
- result.emplace_back(TextToken, "*");
+ result.emplace_back(OperationToken, "*");
stringstream sstream;
sstream << scale;
result.emplace_back(IntegerToken, sstream.str(), scale, 1);
@@ -1282,11 +1287,11 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
{
if (disp < 0)
{
- result.emplace_back(TextToken, "-");
+ result.emplace_back(OperationToken, "-");
disp = -disp;
}
else
- result.emplace_back(TextToken, "+");
+ result.emplace_back(OperationToken, "+");
if (disp_bytes == 2)
sstream << (uint16_t)disp;
@@ -1314,7 +1319,8 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
result.emplace_back(IntegerToken, "0x0", disp, GetAddressSize());
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1332,10 +1338,10 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
c = tolower(c);
result.emplace_back(RegisterToken, seg_str);
- result.emplace_back(TextToken, ":");
+ result.emplace_back(OperationToken, ":");
}
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
const xed_reg_enum_t base = xed_decoded_inst_get_base_reg(xedd, 1);
if (base != XED_REG_INVALID)
{
@@ -1345,7 +1351,8 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
c = tolower(c);
result.emplace_back(RegisterToken, base_str);
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1436,7 +1443,7 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
if ((xed_decoded_inst_get_iclass(xedd) == XED_ICLASS_CALL_NEAR) && (relbr == (int64_t)(addr + xed_decoded_inst_get_length(xedd))))
{
sstream << "$+" << xed_decoded_inst_get_length(xedd);
- result.emplace_back(TextToken, sstream.str());
+ result.emplace_back(OperationToken, sstream.str());
break;
}
@@ -1453,9 +1460,9 @@ void X86CommonArchitecture::GetOperandTextBNIntel(const xed_decoded_inst_t* cons
default:
{
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, "unimplimented ");
+ result.emplace_back(KeywordToken, "unimplemented ");
else
- result.emplace_back(TextToken, "UNIMPLIMENTED ");
+ result.emplace_back(KeywordToken, "UNIMPLEMENTED ");
} // default case of outer switch
} // outer switch
@@ -1559,10 +1566,10 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
GetAddressSizeToken(xed_decoded_inst_operand_length_bits(xedd, i) / 8, result, m_disassembly_options.lowerCase);
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, "ptr ");
+ result.emplace_back(KeywordToken, "ptr ");
else
- result.emplace_back(TextToken, "PTR ");
- result.emplace_back(TextToken, "[");
+ result.emplace_back(KeywordToken, "PTR ");
+ result.emplace_back(BraceToken, "[");
// Segment
const xed_reg_enum_t seg = xed_decoded_inst_get_seg_reg(xedd, 0);
@@ -1575,7 +1582,7 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
for (char& c : seg_str)
c = tolower(c);
result.emplace_back(RegisterToken, seg_str);
- result.emplace_back(TextToken, ":");
+ result.emplace_back(OperationToken, ":");
}
bool started = false;
@@ -1608,7 +1615,8 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
result.emplace_back(CodeRelativeAddressToken, sstream.str(), disp, GetAddressSize());
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1616,7 +1624,7 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
if (index != XED_REG_INVALID)
{
if (started)
- result.emplace_back(TextToken, "+");
+ result.emplace_back(OperationToken, "+");
started = true;
string index_str(xed_reg_enum_t2str(index));
@@ -1630,7 +1638,7 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
const unsigned int scale = xed_decoded_inst_get_scale(xedd, 0);
if (scale != 1)
{
- result.emplace_back(TextToken, "*");
+ result.emplace_back(OperationToken, "*");
stringstream sstream;
sstream << scale;
result.emplace_back(IntegerToken, sstream.str(), scale, 1);
@@ -1653,11 +1661,11 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
{
if (disp < 0)
{
- result.emplace_back(TextToken, "-");
+ result.emplace_back(OperationToken, "-");
disp = -disp;
}
else
- result.emplace_back(TextToken, "+");
+ result.emplace_back(OperationToken, "+");
if (disp_bytes == 2)
sstream << (uint16_t)disp;
@@ -1684,7 +1692,8 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
{
result.emplace_back(IntegerToken, "0x0", disp, GetAddressSize());
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1694,9 +1703,9 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
GetAddressSizeToken(xed_decoded_inst_operand_length_bits(xedd, i) / 8, result, m_disassembly_options.lowerCase);
if (m_disassembly_options.lowerCase)
- result.emplace_back(TextToken, "ptr ");
+ result.emplace_back(KeywordToken, "ptr ");
else
- result.emplace_back(TextToken, "PTR ");
+ result.emplace_back(KeywordToken, "PTR ");
// Segment
const xed_reg_enum_t seg = xed_decoded_inst_get_seg_reg(xedd, 1);
@@ -1709,10 +1718,10 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
c = tolower(c);
result.emplace_back(RegisterToken, seg_str);
- result.emplace_back(TextToken, ":");
+ result.emplace_back(OperationToken, ":");
}
- result.emplace_back(TextToken, "[");
+ result.emplace_back(BraceToken, "[");
const xed_reg_enum_t base = xed_decoded_inst_get_base_reg(xedd, 1);
if (base != XED_REG_INVALID)
{
@@ -1723,7 +1732,8 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
c = tolower(c);
result.emplace_back(RegisterToken, base_str);
}
- result.emplace_back(EndMemoryOperandToken, "]");
+ result.emplace_back(EndMemoryOperandToken, "");
+ result.emplace_back(BraceToken, "]");
break;
}
@@ -1829,7 +1839,7 @@ void X86CommonArchitecture::GetOperandTextATT(const xed_decoded_inst_t* const xe
default:
{
- result.emplace_back(TextToken, "unimplimented");
+ result.emplace_back(KeywordToken, "unimplemented");
} // default case of outer switch
} // outer switch