int get_reg_usage (char *r) { int id, usage; if (reg_is_param (r)) return 1; id = get_reg_number (r); usage = cur_reg->reg_usage[id]; assert (usage >= 0); return usage; }
//------------------------------------------------------------------- unsigned int parse_reg ( unsigned int ra ) { unsigned int rb; for(;newline[ra];ra++) if(newline[ra]!=0x20) break; rb=0; for(;newline[ra];ra++) { if(newline[ra]==',') break; if(newline[ra]==0x20) break; cstring[rb++]=newline[ra]; } cstring[rb]=0; if(get_reg_number(cstring,&rx)) { printf("<%u> Error: not a register\n",line); return(0); } for(;newline[ra];ra++) if(newline[ra]!=0x20) break; return(ra); }
void increg(char* r) { int nr = get_reg_number(r); reg_usage[nr]++; }
void freereg(char* r) { int nr = get_reg_number(r); reg_usage[nr]--; }
void freereg (char *r) { int nr = get_reg_number(r); cur_reg->reg_usage[nr]--; printf ("#freereg %s\n", r); }
void clear_var_reg (char *r) { cur_reg->reg_var[get_reg_number (r)] = 0; }
void set_var_reg (char *r) { cur_reg->reg_var[get_reg_number (r)] = 1; }