Allow asm names for registers which are different from the friendly names shown
in the tracing (because PowerPC register names are just numbers).
This commit is contained in:
parent
b2ddf12473
commit
517120d0fb
|
@ -123,7 +123,7 @@ char* hop_render(struct hop* hop)
|
||||||
case INSEL_HREG:
|
case INSEL_HREG:
|
||||||
{
|
{
|
||||||
struct hreg* hreg = insel->u.hreg;
|
struct hreg* hreg = insel->u.hreg;
|
||||||
appendf("%s", hreg->name);
|
appendf("%s", hreg->realname);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ char* hop_render(struct hop* hop)
|
||||||
if (!hreg)
|
if (!hreg)
|
||||||
hreg = pmap_findright(&hop->regsout, vreg);
|
hreg = pmap_findright(&hop->regsout, vreg);
|
||||||
if (hreg)
|
if (hreg)
|
||||||
appendf("%s", hreg->name);
|
appendf("%s", hreg->realname);
|
||||||
else
|
else
|
||||||
appendf("%%%d", vreg->id);
|
appendf("%%%d", vreg->id);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -13,6 +13,7 @@ struct hreg* new_hreg(const struct burm_register_data* brd)
|
||||||
{
|
{
|
||||||
struct hreg* hreg = calloc(1, sizeof *hreg);
|
struct hreg* hreg = calloc(1, sizeof *hreg);
|
||||||
hreg->name = brd->name;
|
hreg->name = brd->name;
|
||||||
|
hreg->realname = brd->realname;
|
||||||
hreg->attrs = brd->attrs;
|
hreg->attrs = brd->attrs;
|
||||||
hreg->is_stacked = false;
|
hreg->is_stacked = false;
|
||||||
return hreg;
|
return hreg;
|
||||||
|
@ -22,6 +23,7 @@ struct hreg* new_stacked_hreg(int offset, uint32_t attrs)
|
||||||
{
|
{
|
||||||
struct hreg* hreg = calloc(1, sizeof *hreg);
|
struct hreg* hreg = calloc(1, sizeof *hreg);
|
||||||
hreg->name = aprintf("stacked_%d", offset);
|
hreg->name = aprintf("stacked_%d", offset);
|
||||||
|
hreg->realname = hreg->name;
|
||||||
hreg->attrs = attrs;
|
hreg->attrs = attrs;
|
||||||
hreg->is_stacked = true;
|
hreg->is_stacked = true;
|
||||||
hreg->offset = offset;
|
hreg->offset = offset;
|
||||||
|
|
|
@ -14,6 +14,7 @@ struct phicongruence
|
||||||
struct hreg
|
struct hreg
|
||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
|
const char* realname;
|
||||||
uint32_t type;
|
uint32_t type;
|
||||||
uint32_t attrs;
|
uint32_t attrs;
|
||||||
bool is_stacked;
|
bool is_stacked;
|
||||||
|
|
|
@ -7,71 +7,71 @@ REGISTERS
|
||||||
* a register into another register (e.g. for eviction).
|
* a register into another register (e.g. for eviction).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
r12 bytes4! int! volatile;
|
r12 "12" bytes4! int! volatile;
|
||||||
r11 bytes4! int! volatile;
|
r11 "11" bytes4! int! volatile;
|
||||||
r10 bytes4! int! volatile;
|
r10 "10" bytes4! int! volatile;
|
||||||
r9 bytes4! int! volatile;
|
r9 "9" bytes4! int! volatile;
|
||||||
r8 bytes4! int! volatile;
|
r8 "8" bytes4! int! volatile;
|
||||||
r7 bytes4! int! volatile;
|
r7 "7" bytes4! int! volatile;
|
||||||
r6 bytes4! int! volatile;
|
r6 "6" bytes4! int! volatile;
|
||||||
r5 bytes4! int! volatile;
|
r5 "5" bytes4! int! volatile;
|
||||||
r4 bytes4! int! volatile;
|
r4 "4" bytes4! int! volatile;
|
||||||
r3 bytes4! int! ret volatile;
|
r3 "3" bytes4! int! ret volatile;
|
||||||
|
|
||||||
r31 bytes4! int!;
|
r31 "31" bytes4! int!;
|
||||||
r30 bytes4! int!;
|
r30 "30" bytes4! int!;
|
||||||
r29 bytes4! int!;
|
r29 "29" bytes4! int!;
|
||||||
r28 bytes4! int!;
|
r28 "28" bytes4! int!;
|
||||||
r27 bytes4! int!;
|
r27 "27" bytes4! int!;
|
||||||
r26 bytes4! int!;
|
r26 "26" bytes4! int!;
|
||||||
r25 bytes4! int!;
|
r25 "25" bytes4! int!;
|
||||||
r24 bytes4! int!;
|
r24 "24" bytes4! int!;
|
||||||
r23 bytes4! int!;
|
r23 "23" bytes4! int!;
|
||||||
r22 bytes4! int!;
|
r22 "22" bytes4! int!;
|
||||||
r21 bytes4! int!;
|
r21 "21" bytes4! int!;
|
||||||
r20 bytes4! int!;
|
r20 "20" bytes4! int!;
|
||||||
r19 bytes4! int!;
|
r19 "19" bytes4! int!;
|
||||||
r18 bytes4! int!;
|
r18 "18" bytes4! int!;
|
||||||
r17 bytes4! int!;
|
r17 "17" bytes4! int!;
|
||||||
r16 bytes4! int!;
|
r16 "16" bytes4! int!;
|
||||||
r15 bytes4! int!;
|
r15 "15" bytes4! int!;
|
||||||
r14 bytes4! int!;
|
r14 "14" bytes4! int!;
|
||||||
|
|
||||||
f14 bytes4! float! volatile;
|
f14 "14" bytes4! float! volatile;
|
||||||
f13 bytes4! float! volatile;
|
f13 "13" bytes4! float! volatile;
|
||||||
f12 bytes4! float! volatile;
|
f12 "12" bytes4! float! volatile;
|
||||||
f11 bytes4! float! volatile;
|
f11 "11" bytes4! float! volatile;
|
||||||
f10 bytes4! float! volatile;
|
f10 "10" bytes4! float! volatile;
|
||||||
f9 bytes4! float! volatile;
|
f9 "9" bytes4! float! volatile;
|
||||||
f8 bytes4! float! volatile;
|
f8 "8" bytes4! float! volatile;
|
||||||
f7 bytes4! float! volatile;
|
f7 "7" bytes4! float! volatile;
|
||||||
f6 bytes4! float! volatile;
|
f6 "6" bytes4! float! volatile;
|
||||||
f5 bytes4! float! volatile;
|
f5 "5" bytes4! float! volatile;
|
||||||
f4 bytes4! float! volatile;
|
f4 "4" bytes4! float! volatile;
|
||||||
f3 bytes4! float! volatile;
|
f3 "3" bytes4! float! volatile;
|
||||||
f2 bytes4! float! volatile;
|
f2 "2" bytes4! float! volatile;
|
||||||
f1 bytes4! float! volatile;
|
f1 "1" bytes4! float! volatile;
|
||||||
f0 bytes4! float! volatile;
|
f0 "0" bytes4! float! volatile;
|
||||||
|
|
||||||
f31 bytes4! float!;
|
f31 "31" bytes4! float!;
|
||||||
f30 bytes4! float!;
|
f30 "30" bytes4! float!;
|
||||||
f29 bytes4! float!;
|
f29 "29" bytes4! float!;
|
||||||
f28 bytes4! float!;
|
f28 "28" bytes4! float!;
|
||||||
f27 bytes4! float!;
|
f27 "27" bytes4! float!;
|
||||||
f26 bytes4! float!;
|
f26 "26" bytes4! float!;
|
||||||
f25 bytes4! float!;
|
f25 "25" bytes4! float!;
|
||||||
f24 bytes4! float!;
|
f24 "24" bytes4! float!;
|
||||||
f23 bytes4! float!;
|
f23 "23" bytes4! float!;
|
||||||
f22 bytes4! float!;
|
f22 "22" bytes4! float!;
|
||||||
f21 bytes4! float!;
|
f21 "21" bytes4! float!;
|
||||||
f20 bytes4! float!;
|
f20 "20" bytes4! float!;
|
||||||
f19 bytes4! float!;
|
f19 "19" bytes4! float!;
|
||||||
f18 bytes4! float!;
|
f18 "18" bytes4! float!;
|
||||||
f17 bytes4! float!;
|
f17 "17" bytes4! float!;
|
||||||
f16 bytes4! float!;
|
f16 "16" bytes4! float!;
|
||||||
f15 bytes4! float!;
|
f15 "15" bytes4! float!;
|
||||||
|
|
||||||
cr0 cr!;
|
cr0 "cr0" cr!;
|
||||||
|
|
||||||
|
|
||||||
DECLARATIONS
|
DECLARATIONS
|
||||||
|
|
|
@ -71,7 +71,7 @@ registers
|
||||||
;
|
;
|
||||||
|
|
||||||
register
|
register
|
||||||
: ID { $$ = makereg($1); }
|
: ID QFRAGMENT { $$ = makereg($1, $2); }
|
||||||
| register ID { $$ = $1; addregattr($1, $2, false); }
|
| register ID { $$ = $1; addregattr($1, $2, false); }
|
||||||
| register ID '!' { $$ = $1; addregattr($1, $2, true); }
|
| register ID '!' { $$ = $1; addregattr($1, $2, true); }
|
||||||
;
|
;
|
||||||
|
|
|
@ -253,7 +253,7 @@ static void* install(const char* name)
|
||||||
return &p->sym;
|
return &p->sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct reg* makereg(const char* id)
|
struct reg* makereg(const char* id, const char* realname)
|
||||||
{
|
{
|
||||||
struct reg* p = smap_get(®isters, id);
|
struct reg* p = smap_get(®isters, id);
|
||||||
static int number = 0;
|
static int number = 0;
|
||||||
|
@ -262,6 +262,7 @@ struct reg* makereg(const char* id)
|
||||||
yyerror("redefinition of '%s'", id);
|
yyerror("redefinition of '%s'", id);
|
||||||
p = calloc(1, sizeof(*p));
|
p = calloc(1, sizeof(*p));
|
||||||
p->name = id;
|
p->name = id;
|
||||||
|
p->realname = realname;
|
||||||
p->number = number++;
|
p->number = number++;
|
||||||
smap_put(®isters, id, p);
|
smap_put(®isters, id, p);
|
||||||
|
|
||||||
|
@ -591,7 +592,8 @@ static void emitregisters(void)
|
||||||
struct reg* r = registers.item[i].right;
|
struct reg* r = registers.item[i].right;
|
||||||
assert(r->number == i);
|
assert(r->number == i);
|
||||||
|
|
||||||
print("%1{ \"%s\", 0x%x, 0x%x },\n", r->name, r->type, r->attrs);
|
print("%1{ \"%s\", \"%s\", 0x%x, 0x%x },\n",
|
||||||
|
r->name, r->realname, r->type, r->attrs);
|
||||||
}
|
}
|
||||||
print("%1{ NULL }\n");
|
print("%1{ NULL }\n");
|
||||||
print("};\n\n");
|
print("};\n\n");
|
||||||
|
|
|
@ -58,7 +58,8 @@ struct terminfo
|
||||||
|
|
||||||
struct reg
|
struct reg
|
||||||
{
|
{
|
||||||
const char* name; /* register name */
|
const char* name; /* friendly register name */
|
||||||
|
const char* realname; /* name used in assembly output */
|
||||||
int number; /* identifying number */
|
int number; /* identifying number */
|
||||||
uint32_t attrs; /* bitfield of register attributes */
|
uint32_t attrs; /* bitfield of register attributes */
|
||||||
uint32_t type; /* register type */
|
uint32_t type; /* register type */
|
||||||
|
@ -70,7 +71,7 @@ struct regattr
|
||||||
int number; /* identifying number */
|
int number; /* identifying number */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct reg* makereg(const char* name);
|
extern struct reg* makereg(const char* name, const char* realname);
|
||||||
extern void addregattr(struct reg* reg, const char* regattr, bool exact);
|
extern void addregattr(struct reg* reg, const char* regattr, bool exact);
|
||||||
extern struct regattr* getregattr(const char* name);
|
extern struct regattr* getregattr(const char* name);
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ extern const struct burm_instruction_data burm_instruction_data[];
|
||||||
struct burm_register_data
|
struct burm_register_data
|
||||||
{
|
{
|
||||||
const char* name;
|
const char* name;
|
||||||
|
const char* realname;
|
||||||
uint32_t type;
|
uint32_t type;
|
||||||
uint32_t attrs;
|
uint32_t attrs;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue