On MIPS, it's somewhat common to have unnamed registers ($0 to $31), but Capstone doesn't currently support unnamed registers on MIPS, even though the general mechanism exists in capstone (CS_OPT_SYNTAX_NOREGNAME).
MipsInstPrinter.c would need to handle CS_OPT_SYNTAX_NOREGNAME, somewhat similar to ARMInstPrinter.c:
// arch/ARM/ARMInstPrinter.c
void ARM_getRegName(cs_struct *handle, int value)
{
if (value == CS_OPT_SYNTAX_NOREGNAME) {
handle->get_regname = getRegisterName2;
handle->reg_name = ARM_reg_name2;;
} else {
handle->get_regname = getRegisterName;
handle->reg_name = ARM_reg_name;;
}
}
// arch/Mips/MipsInstPrinter.c
static void printRegName(SStream *OS, unsigned RegNo)
{
SStream_concat(OS, "$%s", getRegisterName(RegNo));
}
What I've seen when dealing with binutils are:
- unnamed registers
$0 - $31
- named registers
t1, sp, etc.
On MIPS, it's somewhat common to have unnamed registers (
$0 to $31), but Capstone doesn't currently support unnamed registers on MIPS, even though the general mechanism exists in capstone (CS_OPT_SYNTAX_NOREGNAME).MipsInstPrinter.c would need to handle
CS_OPT_SYNTAX_NOREGNAME, somewhat similar to ARMInstPrinter.c:What I've seen when dealing with binutils are:
$0-$31t1,sp, etc.