Hidden some names, fixed STR 1 bug, use stdio instead of print module
This commit is contained in:
parent
6a02543de2
commit
63c9fea5c2
|
@ -19,7 +19,7 @@ define(`BP_OFFSET',`'WINDOWSIZE)
|
||||||
define(`'`EM_BSIZE',EM_BSIZE)
|
define(`'`EM_BSIZE',EM_BSIZE)
|
||||||
define(STACK_CLICK,4)
|
define(STACK_CLICK,4)
|
||||||
|
|
||||||
#if RESOLVE_debug
|
#if RESOLV_debug
|
||||||
define(Comment0)
|
define(Comment0)
|
||||||
define(Comment)
|
define(Comment)
|
||||||
define(Comment2)
|
define(Comment2)
|
||||||
|
@ -190,7 +190,7 @@ C_lxl
|
||||||
a = alloc_reg();
|
a = alloc_reg();
|
||||||
b = alloc_reg();
|
b = alloc_reg();
|
||||||
c = alloc_reg();
|
c = alloc_reg();
|
||||||
sprintf(n_str, "%d", $1);
|
sprint(n_str, "%d", $1);
|
||||||
"set $n_str, $a";
|
"set $n_str, $a";
|
||||||
"mov $reg_lb, $b";
|
"mov $reg_lb, $b";
|
||||||
"1: ld [$b + EM_BSIZE], $c";
|
"1: ld [$b + EM_BSIZE], $c";
|
||||||
|
@ -671,7 +671,7 @@ C_mli
|
||||||
|
|
||||||
if (n0) {
|
if (n0) {
|
||||||
a = alloc_reg();
|
a = alloc_reg();
|
||||||
sprintf(n_str, "%d", n0);
|
sprint(n_str, "%d", n0);
|
||||||
"sll $orig, $n_str, $a";
|
"sll $orig, $n_str, $a";
|
||||||
free_reg(orig);
|
free_reg(orig);
|
||||||
orig = a;
|
orig = a;
|
||||||
|
@ -689,7 +689,7 @@ C_mli
|
||||||
n <<= n1;
|
n <<= n1;
|
||||||
} else {
|
} else {
|
||||||
a = alloc_reg();
|
a = alloc_reg();
|
||||||
sprintf(n_str, "%d", n1);
|
sprint(n_str, "%d", n1);
|
||||||
"sll $orig, $n_str, $a";
|
"sll $orig, $n_str, $a";
|
||||||
b = alloc_reg();
|
b = alloc_reg();
|
||||||
"sub $a, $orig, $b";
|
"sub $a, $orig, $b";
|
||||||
|
@ -738,7 +738,7 @@ C_dvi
|
||||||
if (type_of_tos() == T_cst &&
|
if (type_of_tos() == T_cst &&
|
||||||
power_of_2(top_const(), &n_exp))
|
power_of_2(top_const(), &n_exp))
|
||||||
{
|
{
|
||||||
sprintf (n_exp_str, "%d", n_exp);
|
sprint (n_exp_str, "%d", n_exp);
|
||||||
n= pop_const(NULL);
|
n= pop_const(NULL);
|
||||||
a= pop_reg();
|
a= pop_reg();
|
||||||
if (n <0)
|
if (n <0)
|
||||||
|
@ -921,7 +921,7 @@ C_dvu
|
||||||
if (type_of_tos() == T_cst &&
|
if (type_of_tos() == T_cst &&
|
||||||
uns_power_of_2(top_const(), &n_exp))
|
uns_power_of_2(top_const(), &n_exp))
|
||||||
{
|
{
|
||||||
sprintf (n_exp_str, "%d", n_exp);
|
sprint (n_exp_str, "%d", n_exp);
|
||||||
n= pop_const(NULL);
|
n= pop_const(NULL);
|
||||||
a= pop_reg();
|
a= pop_reg();
|
||||||
b= alloc_reg();
|
b= alloc_reg();
|
||||||
|
@ -1450,7 +1450,7 @@ C_ine.. ==>
|
||||||
b= alloc_reg();
|
b= alloc_reg();
|
||||||
|
|
||||||
ename= $1;
|
ename= $1;
|
||||||
sprintf(evalue, "%d", $2);
|
sprint(evalue, "%d", $2);
|
||||||
"sethi %hi($ename+$evalue), $a";
|
"sethi %hi($ename+$evalue), $a";
|
||||||
"ld [$a+%lo($ename+$evalue)], $b";
|
"ld [$a+%lo($ename+$evalue)], $b";
|
||||||
"inc $b";
|
"inc $b";
|
||||||
|
@ -1497,7 +1497,7 @@ C_dee.. ==>
|
||||||
b= alloc_reg();
|
b= alloc_reg();
|
||||||
|
|
||||||
ename= $1;
|
ename= $1;
|
||||||
sprintf(evalue, "%d", $2);
|
sprint(evalue, "%d", $2);
|
||||||
"sethi %hi($ename+$evalue), $a";
|
"sethi %hi($ename+$evalue), $a";
|
||||||
"ld [$a+%lo($ename+$evalue)], $b";
|
"ld [$a+%lo($ename+$evalue)], $b";
|
||||||
"dec $b";
|
"dec $b";
|
||||||
|
@ -1533,7 +1533,7 @@ C_zre.. ==>
|
||||||
a= alloc_reg();
|
a= alloc_reg();
|
||||||
|
|
||||||
ename= $1;
|
ename= $1;
|
||||||
sprintf(evalue, "%d", $2);
|
sprint(evalue, "%d", $2);
|
||||||
"sethi %hi($ename+$evalue), $a";
|
"sethi %hi($ename+$evalue), $a";
|
||||||
"st %g0, [$a+%lo($ename+$evalue)]"
|
"st %g0, [$a+%lo($ename+$evalue)]"
|
||||||
free_reg(a);
|
free_reg(a);
|
||||||
|
@ -2744,7 +2744,7 @@ C_com_narg ==>
|
||||||
b= alloc_reg();
|
b= alloc_reg();
|
||||||
for (i= 0; i< n; i += 4)
|
for (i= 0; i< n; i += 4)
|
||||||
{
|
{
|
||||||
sprintf(i_str, "%d", i);
|
sprint(i_str, "%d", i);
|
||||||
"ld [$reg_sp+$i_str], $a";
|
"ld [$reg_sp+$i_str], $a";
|
||||||
"not $a, $b";
|
"not $a, $b";
|
||||||
"st $b, [$reg_sp+$i_str]";
|
"st $b, [$reg_sp+$i_str]";
|
||||||
|
@ -2796,9 +2796,9 @@ C_rol
|
||||||
a= pop_reg();
|
a= pop_reg();
|
||||||
b= alloc_reg();
|
b= alloc_reg();
|
||||||
c= alloc_reg();
|
c= alloc_reg();
|
||||||
sprintf(n_str, "%d", n);
|
sprint(n_str, "%d", n);
|
||||||
"sll $a, $n_str, $b";
|
"sll $a, $n_str, $b";
|
||||||
sprintf(n_str, "%d", 32-n);
|
sprint(n_str, "%d", 32-n);
|
||||||
"srl $a, $n_str, $c";
|
"srl $a, $n_str, $c";
|
||||||
"or $b, $c, $a";
|
"or $b, $c, $a";
|
||||||
push_reg(a);
|
push_reg(a);
|
||||||
|
@ -2855,9 +2855,9 @@ C_ror
|
||||||
a= pop_reg();
|
a= pop_reg();
|
||||||
b= alloc_reg();
|
b= alloc_reg();
|
||||||
c= alloc_reg();
|
c= alloc_reg();
|
||||||
sprintf(n_str, "%d", n);
|
sprint(n_str, "%d", n);
|
||||||
"srl $a, $n_str, $b";
|
"srl $a, $n_str, $b";
|
||||||
sprintf(n_str, "%d", 32-n);
|
sprint(n_str, "%d", 32-n);
|
||||||
"sll $a, $n_str, $c";
|
"sll $a, $n_str, $c";
|
||||||
"or $b, $c, $a";
|
"or $b, $c, $a";
|
||||||
push_reg(a);
|
push_reg(a);
|
||||||
|
@ -3020,7 +3020,7 @@ C_inn_narg ==>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
arg_error ("inn_narg");
|
not_implemented ("inn_narg");
|
||||||
}.
|
}.
|
||||||
|
|
||||||
C_set ==> Comment( set, $1);
|
C_set ==> Comment( set, $1);
|
||||||
|
@ -3055,7 +3055,7 @@ C_set_narg ==>
|
||||||
c= alloc_reg();
|
c= alloc_reg();
|
||||||
d= alloc_reg();
|
d= alloc_reg();
|
||||||
flush_cache();
|
flush_cache();
|
||||||
sprintf(n_str, "%d", n);
|
sprint(n_str, "%d", n);
|
||||||
"set $n_str, $a";
|
"set $n_str, $a";
|
||||||
"sub $reg_sp, $a, $reg_sp";
|
"sub $reg_sp, $a, $reg_sp";
|
||||||
"1:";
|
"1:";
|
||||||
|
@ -4164,7 +4164,7 @@ C_dus
|
||||||
"sub $reg_sp, $n_str, $reg_sp";
|
"sub $reg_sp, $n_str, $reg_sp";
|
||||||
for (i=0; i<n; i += 4)
|
for (i=0; i<n; i += 4)
|
||||||
{
|
{
|
||||||
sprintf(i_str, "%d", i);
|
sprint(i_str, "%d", i);
|
||||||
"ld [$reg_sp+$i_str+$n_str], $a";
|
"ld [$reg_sp+$i_str+$n_str], $a";
|
||||||
"st $a, [$reg_sp+$i_str]";
|
"st $a, [$reg_sp+$i_str]";
|
||||||
}
|
}
|
||||||
|
@ -4239,8 +4239,8 @@ C_exg_narg ==>
|
||||||
flush_cache();
|
flush_cache();
|
||||||
for (i=0; i<n; i += 4)
|
for (i=0; i<n; i += 4)
|
||||||
{
|
{
|
||||||
sprintf(i_str, "%d", i);
|
sprint(i_str, "%d", i);
|
||||||
sprintf(in_str, "%d", i+n);
|
sprint(in_str, "%d", i+n);
|
||||||
"ld [$reg_sp+$i_str], $a";
|
"ld [$reg_sp+$i_str], $a";
|
||||||
"ld [$reg_sp+$in_str], $b";
|
"ld [$reg_sp+$in_str], $b";
|
||||||
"st $b, [$reg_sp+$i_str]";
|
"st $b, [$reg_sp+$i_str]";
|
||||||
|
@ -4344,7 +4344,7 @@ C_lin ==>
|
||||||
#ifdef FAST_LIN_LNI_FIL
|
#ifdef FAST_LIN_LNI_FIL
|
||||||
{
|
{
|
||||||
const_str_t n_str;
|
const_str_t n_str;
|
||||||
sprintf(n_str, "%d", $1);
|
sprint(n_str, "%d", $1);
|
||||||
"set $n_str, $reg_fil";
|
"set $n_str, $reg_fil";
|
||||||
}.
|
}.
|
||||||
#else
|
#else
|
||||||
|
@ -4506,6 +4506,7 @@ C_sim ==>
|
||||||
C_str
|
C_str
|
||||||
$1 == 0 ==>
|
$1 == 0 ==>
|
||||||
Comment( str , $1 );
|
Comment( str , $1 );
|
||||||
|
flush_cache();
|
||||||
"ld [$reg_sp], $reg_lb";
|
"ld [$reg_sp], $reg_lb";
|
||||||
"add $reg_lb, 4, %fp";
|
"add $reg_lb, 4, %fp";
|
||||||
"and %fp, -8, %fp";
|
"and %fp, -8, %fp";
|
||||||
|
@ -4514,7 +4515,8 @@ C_str
|
||||||
$1 == 1 ==>
|
$1 == 1 ==>
|
||||||
{
|
{
|
||||||
Comment( str , $1 );
|
Comment( str , $1 );
|
||||||
pop_reg_as(reg_sp);
|
flush_cache();
|
||||||
|
"ld [$reg_sp], $reg_sp";
|
||||||
}.
|
}.
|
||||||
$1 == 2 ==>
|
$1 == 2 ==>
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#define POP1 cache_need(1);
|
#define POP1 cache_need(1);
|
||||||
#define POP2 { --tos; assert(c_count); --c_count; }
|
#define POP2 { --tos; assert(c_count); --c_count; }
|
||||||
|
|
||||||
int indent_count = 0;
|
static int indent_count = 0;
|
||||||
|
|
||||||
#define enter(x) indent_count++;
|
#define enter(x) indent_count++;
|
||||||
#define indent() { int i = indent_count; while (i--) putc('\t', stderr); }
|
#define indent() { int i = indent_count; while (i--) putc('\t', stderr); }
|
||||||
|
@ -32,7 +32,7 @@ int indent_count = 0;
|
||||||
push_ext(char *)
|
push_ext(char *)
|
||||||
flush_cache() after branches and labels
|
flush_cache() after branches and labels
|
||||||
cache_read(int) read-ahead. optimization only
|
cache_read(int) read-ahead. optimization only
|
||||||
dump_cache(FILE *) debug info: show current stack
|
dump_cache(File *) debug info: show current stack
|
||||||
pop_nop() remove element from cache
|
pop_nop() remove element from cache
|
||||||
|
|
||||||
reg_t alloc_reg()
|
reg_t alloc_reg()
|
||||||
|
@ -57,7 +57,10 @@ typedef struct cache_elt {
|
||||||
arith cst;
|
arith cst;
|
||||||
} cache_elt;
|
} cache_elt;
|
||||||
*/
|
*/
|
||||||
char regnam[][8] = {
|
|
||||||
|
#define REG_NUM(r) (((char(*)[8])(r))-regnam)
|
||||||
|
|
||||||
|
static char regnam[][8] = {
|
||||||
/*x*/ "%g0", "%g1", "%g2", "%g3", "%g4", "%g5", "%g6", "%g7",
|
/*x*/ "%g0", "%g1", "%g2", "%g3", "%g4", "%g5", "%g6", "%g7",
|
||||||
/*x*/ "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i6", "%i7",
|
/*x*/ "%i0", "%i1", "%i2", "%i3", "%i4", "%i5", "%i6", "%i7",
|
||||||
/*x*/ "%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7",
|
/*x*/ "%l0", "%l1", "%l2", "%l3", "%l4", "%l5", "%l6", "%l7",
|
||||||
|
@ -76,7 +79,7 @@ reg_t reg_f0;
|
||||||
reg_t reg_sp, reg_lb, reg_gap;
|
reg_t reg_sp, reg_lb, reg_gap;
|
||||||
reg_t reg_tmp, reg_lin, reg_fil;
|
reg_t reg_tmp, reg_lin, reg_fil;
|
||||||
|
|
||||||
struct regdat_t reg[NR_REGS];
|
static struct regdat_t reg[NR_REGS];
|
||||||
|
|
||||||
#define POP_SIZE 1 /* maybe >1 (read-ahead cache) or explicit?! */
|
#define POP_SIZE 1 /* maybe >1 (read-ahead cache) or explicit?! */
|
||||||
#define CACHE_SIZE 32 /* ? */
|
#define CACHE_SIZE 32 /* ? */
|
||||||
|
@ -90,14 +93,15 @@ struct regdat_t reg[NR_REGS];
|
||||||
#define HI_OUT 31
|
#define HI_OUT 31
|
||||||
#define LO_FLOAT 32
|
#define LO_FLOAT 32
|
||||||
#define HI_FLOAT 63
|
#define HI_FLOAT 63
|
||||||
|
|
||||||
const13(x)
|
const13(x)
|
||||||
{
|
{
|
||||||
return (x < 4096 && x >= -4096);
|
return (x < 4096 && x >= -4096);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct cache_elt cache[CACHE_SIZE], *tos = 0;
|
static struct cache_elt cache[CACHE_SIZE], *tos = 0;
|
||||||
int c_count = 0;
|
static int c_count = 0;
|
||||||
const_str_t s;
|
static const_str_t s;
|
||||||
|
|
||||||
static void panic(s)
|
static void panic(s)
|
||||||
char *s;
|
char *s;
|
||||||
|
@ -224,15 +228,15 @@ enter("flush_part_cache");
|
||||||
j = i;
|
j = i;
|
||||||
if (i)
|
if (i)
|
||||||
{
|
{
|
||||||
sprintf (i_str, "%d", 4*i);
|
sprint (i_str, "%d", 4*i);
|
||||||
"dec $i_str, $reg_sp";
|
"dec $i_str, $reg_sp";
|
||||||
while (i--)
|
while (i--)
|
||||||
{
|
{
|
||||||
sprintf(i_str, "%d", 4*(j-1-i));
|
sprint(i_str, "%d", 4*(j-1-i));
|
||||||
if (cache[i].ext)
|
if (cache[i].ext)
|
||||||
{
|
{
|
||||||
ext= cache[i].ext;
|
ext= cache[i].ext;
|
||||||
sprintf (e_str, "%d", cache[i].cst);
|
sprint (e_str, "%d", cache[i].cst);
|
||||||
"set $ext+$e_str, $reg_tmp";
|
"set $ext+$e_str, $reg_tmp";
|
||||||
"st $reg_tmp, [$reg_sp+$i_str]";
|
"st $reg_tmp, [$reg_sp+$i_str]";
|
||||||
free(ext);
|
free(ext);
|
||||||
|
@ -249,7 +253,7 @@ enter("flush_part_cache");
|
||||||
}
|
}
|
||||||
if (!const13(cache[i].cst))
|
if (!const13(cache[i].cst))
|
||||||
{
|
{
|
||||||
sprintf(n_str, "%d",
|
sprint(n_str, "%d",
|
||||||
cache[i].cst);
|
cache[i].cst);
|
||||||
"sethi %hi($n_str), $reg_tmp";
|
"sethi %hi($n_str), $reg_tmp";
|
||||||
if (cache[i].reg != reg_g0)
|
if (cache[i].reg != reg_g0)
|
||||||
|
@ -265,7 +269,7 @@ enter("flush_part_cache");
|
||||||
}
|
}
|
||||||
if (cache[i].cst)
|
if (cache[i].cst)
|
||||||
{
|
{
|
||||||
sprintf(n_str, "%d", cache[i].cst);
|
sprint(n_str, "%d", cache[i].cst);
|
||||||
"add $rh, $n_str, $reg_tmp";
|
"add $rh, $n_str, $reg_tmp";
|
||||||
rh= reg_tmp;
|
rh= reg_tmp;
|
||||||
}
|
}
|
||||||
|
@ -658,16 +662,16 @@ if (debug) { indent(); fprintf(stderr,"pop_reg_c13()=...\n"); }
|
||||||
assert(tos->reg == reg_g0);
|
assert(tos->reg == reg_g0);
|
||||||
S1 = alloc_reg();
|
S1 = alloc_reg();
|
||||||
V1 = tos->ext;
|
V1 = tos->ext;
|
||||||
sprintf(V2, "%d", tos->cst);
|
sprint(V2, "%d", tos->cst);
|
||||||
"sethi %hi($V1+$V2), $S1";
|
"sethi %hi($V1+$V2), $S1";
|
||||||
sprintf(n, "%%lo(%s+%d)", tos->ext, tos->cst);
|
sprint(n, "%%lo(%s+%d)", tos->ext, tos->cst);
|
||||||
free(V1);
|
free(V1);
|
||||||
POP2;
|
POP2;
|
||||||
} else {
|
} else {
|
||||||
S1 = tos->reg;
|
S1 = tos->reg;
|
||||||
if (!(const13(tos->cst))) {
|
if (!(const13(tos->cst))) {
|
||||||
S3 = alloc_reg();
|
S3 = alloc_reg();
|
||||||
sprintf(V2, "%d", tos->cst);
|
sprint(V2, "%d", tos->cst);
|
||||||
"sethi %hi($V2), $S3";
|
"sethi %hi($V2), $S3";
|
||||||
if (tos->reg != reg_g0) {
|
if (tos->reg != reg_g0) {
|
||||||
S2 = alloc_reg();
|
S2 = alloc_reg();
|
||||||
|
@ -678,7 +682,7 @@ if (debug) { indent(); fprintf(stderr,"pop_reg_c13()=...\n"); }
|
||||||
}
|
}
|
||||||
tos->cst &= 0x3FF;
|
tos->cst &= 0x3FF;
|
||||||
}
|
}
|
||||||
sprintf(n, "%d", tos->cst);
|
sprint(n, "%d", tos->cst);
|
||||||
POP2;
|
POP2;
|
||||||
}
|
}
|
||||||
if (debug) { indent(); fprint(codefile, "\t\t! %s+%s cache:", S1, n); dump_cache(codefile);}
|
if (debug) { indent(); fprint(codefile, "\t\t! %s+%s cache:", S1, n); dump_cache(codefile);}
|
||||||
|
@ -833,7 +837,7 @@ enter("pop_const");
|
||||||
x = top_const();
|
x = top_const();
|
||||||
POP2;
|
POP2;
|
||||||
if (n)
|
if (n)
|
||||||
sprintf(n, "%d", x);
|
sprint(n, "%d", x);
|
||||||
if (debug) { indent(); fprint(codefile, "\t\t! %d cache:", x); dump_cache(codefile); }
|
if (debug) { indent(); fprint(codefile, "\t\t! %d cache:", x); dump_cache(codefile); }
|
||||||
leave("pop_const");
|
leave("pop_const");
|
||||||
return x;
|
return x;
|
||||||
|
@ -890,7 +894,7 @@ if (debug) { indent(); fprintf(stderr,"pop_reg_as(%s)=...\n", r); }
|
||||||
} else if (tos->ext) {
|
} else if (tos->ext) {
|
||||||
assert(tos->reg == reg_g0);
|
assert(tos->reg == reg_g0);
|
||||||
V1 = tos->ext;
|
V1 = tos->ext;
|
||||||
sprintf(V2, "%d", tos->cst);
|
sprint(V2, "%d", tos->cst);
|
||||||
"set $V1+$V2, $r";
|
"set $V1+$V2, $r";
|
||||||
free(V1);
|
free(V1);
|
||||||
POP2;
|
POP2;
|
||||||
|
@ -911,7 +915,7 @@ if (debug) { indent(); fprintf(stderr,"pop_reg_as(%s)=...\n", r); }
|
||||||
soft_alloc_reg(r);
|
soft_alloc_reg(r);
|
||||||
tos_reg2= r;
|
tos_reg2= r;
|
||||||
}
|
}
|
||||||
sprintf(c_str, "%d", tos_cst);
|
sprint(c_str, "%d", tos_cst);
|
||||||
"sethi %hi($c_str), $tos_reg2";
|
"sethi %hi($c_str), $tos_reg2";
|
||||||
tos_cst &= 0x3ff;
|
tos_cst &= 0x3ff;
|
||||||
if (tos_reg == reg_g0)
|
if (tos_reg == reg_g0)
|
||||||
|
@ -938,7 +942,7 @@ if (debug) { indent(); fprintf(stderr,"pop_reg_as(%s)=...\n", r); }
|
||||||
}
|
}
|
||||||
if (tos_cst)
|
if (tos_cst)
|
||||||
{
|
{
|
||||||
sprintf(c_str, "%d", tos_cst);
|
sprint(c_str, "%d", tos_cst);
|
||||||
soft_alloc_reg(r);
|
soft_alloc_reg(r);
|
||||||
"add $tos_reg, $c_str, $r";
|
"add $tos_reg, $c_str, $r";
|
||||||
free_reg(tos_reg);
|
free_reg(tos_reg);
|
||||||
|
@ -1134,7 +1138,7 @@ enter("pop_nop");
|
||||||
POP2;
|
POP2;
|
||||||
}
|
}
|
||||||
if (i) {
|
if (i) {
|
||||||
sprintf(V1, "%d", 4*i);
|
sprint(V1, "%d", 4*i);
|
||||||
if (const13(4*i)) {
|
if (const13(4*i)) {
|
||||||
"inc $V1, %l0";
|
"inc $V1, %l0";
|
||||||
} else {
|
} else {
|
||||||
|
@ -1195,7 +1199,7 @@ if (debug) { indent(); fprintf(stderr,"cache_read(%d, %d)\n", n,i); }
|
||||||
S1= alloc_reg();
|
S1= alloc_reg();
|
||||||
old_c_count = cache_read(n, i+1);
|
old_c_count = cache_read(n, i+1);
|
||||||
|
|
||||||
sprintf(V1, "%d", (old_c_count-1-i) * 4);
|
sprint(V1, "%d", (old_c_count-1-i) * 4);
|
||||||
"ld [%l0+$V1], $S1";
|
"ld [%l0+$V1], $S1";
|
||||||
cache[i].reg= S1;
|
cache[i].reg= S1;
|
||||||
cache[i].reg2= reg_g0;
|
cache[i].reg2= reg_g0;
|
||||||
|
@ -1203,7 +1207,7 @@ if (debug) { indent(); fprintf(stderr,"cache_read(%d, %d)\n", n,i); }
|
||||||
cache[i].cst= 0;
|
cache[i].cst= 0;
|
||||||
if (!i)
|
if (!i)
|
||||||
{
|
{
|
||||||
sprintf(V1, "%d", (old_c_count)*4);
|
sprint(V1, "%d", (old_c_count)*4);
|
||||||
"add $reg_sp, $V1, $reg_sp";
|
"add $reg_sp, $V1, $reg_sp";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1277,7 +1281,7 @@ enter("dup_tos");
|
||||||
soft_alloc_reg(tos->reg2);
|
soft_alloc_reg(tos->reg2);
|
||||||
} else {
|
} else {
|
||||||
a= alloc_reg();
|
a= alloc_reg();
|
||||||
sprintf(i_str, "%d", (n-c_count)*4);
|
sprint(i_str, "%d", (n-c_count)*4);
|
||||||
"ld [$reg_sp+$i_str], $a";
|
"ld [$reg_sp+$i_str], $a";
|
||||||
tos->reg = a;
|
tos->reg = a;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,87 @@ mach.h
|
||||||
#ifndef MACH_H
|
#ifndef MACH_H
|
||||||
#define MACH_H
|
#define MACH_H
|
||||||
|
|
||||||
#define con_str B_constr
|
#define alloc_double B_alloc_double
|
||||||
#define rom_str B_romstr
|
#define alloc_double_var B_allc_double_var
|
||||||
#define gen_str B_genstr
|
#define alloc_float B_alloc_float
|
||||||
|
#define alloc_float_var B_allc_float_var
|
||||||
|
#define alloc_reg B_alloc_reg
|
||||||
|
#define alloc_reg_var B_allc_reg_var
|
||||||
|
#define free_reg B_free_reg
|
||||||
|
#define free_output B_free_output
|
||||||
|
#define free_double_reg B_free_double_reg
|
||||||
|
#define forced_alloc_reg B_forced_alloc_reg
|
||||||
|
#define force_alloc_output B_forcallocoutput
|
||||||
|
#define flush_cache B_flush_cache
|
||||||
|
#define dup_tos B_dup_tos
|
||||||
|
#define con_float B_con_float
|
||||||
|
#define check_cache B_check_cache
|
||||||
|
#define change_reg B_change_reg
|
||||||
|
#define arg_error B_arg_error
|
||||||
|
#define const13 B_const13
|
||||||
|
#define type_of_tos B_typeoftos
|
||||||
|
#define top_const B_top_const
|
||||||
|
#define soft_alloc_reg B_soft_alloc_reg
|
||||||
|
#define push_reg B_pushreg
|
||||||
|
#define push_ext B_pushext
|
||||||
|
#define push_double_reg B_pushdoublereg
|
||||||
|
#define push_const B_pushconst
|
||||||
|
#define pop_reg_reg B_pop_reg_reg
|
||||||
|
#define pop_reg_c13 B_popregc13
|
||||||
|
#define pop_reg_as B_popas
|
||||||
|
#define pop_reg B_popr
|
||||||
|
#define pop_nop B_popnop
|
||||||
|
#define pop_float B_popfloat
|
||||||
|
#define pop_double_reg_as B_popdouble_reg_as
|
||||||
|
#define pop_double B_pop_double
|
||||||
|
#define pop_const B_pop_const
|
||||||
|
#define init_cache B_init_cache
|
||||||
|
#define inc_tos_reg B_inc_tos_reg
|
||||||
|
#define inc_tos B_inctos
|
||||||
|
|
||||||
|
#define reg_g0 B_regg0
|
||||||
|
#define reg_g1 B_regg1
|
||||||
|
#define reg_g2 B_regg2
|
||||||
|
#define reg_g3 B_regg3
|
||||||
|
#define reg_g4 B_regg4
|
||||||
|
#define reg_g5 B_regg5
|
||||||
|
#define reg_g6 B_regg6
|
||||||
|
#define reg_g7 B_regg7
|
||||||
|
|
||||||
|
#define reg_i0 B_regi0
|
||||||
|
#define reg_i1 B_regi1
|
||||||
|
#define reg_i2 B_regi2
|
||||||
|
#define reg_i3 B_regi3
|
||||||
|
#define reg_i4 B_regi4
|
||||||
|
#define reg_i5 B_regi5
|
||||||
|
#define reg_i6 B_regi6
|
||||||
|
#define reg_i7 B_regi7
|
||||||
|
|
||||||
|
#define reg_o0 B_rego0
|
||||||
|
#define reg_o1 B_rego1
|
||||||
|
#define reg_o2 B_rego2
|
||||||
|
#define reg_o3 B_rego3
|
||||||
|
#define reg_o4 B_rego4
|
||||||
|
#define reg_o5 B_rego5
|
||||||
|
#define reg_o6 B_rego6
|
||||||
|
#define reg_o7 B_rego7
|
||||||
|
|
||||||
|
#define reg_l0 B_regl0
|
||||||
|
#define reg_l1 B_regl1
|
||||||
|
#define reg_l2 B_regl2
|
||||||
|
#define reg_l3 B_regl3
|
||||||
|
#define reg_l4 B_regl4
|
||||||
|
#define reg_l5 B_regl5
|
||||||
|
#define reg_l6 B_regl6
|
||||||
|
#define reg_l7 B_regl7
|
||||||
|
|
||||||
|
#define reg_f0 B_regf0
|
||||||
|
#define reg_gap B_reggap
|
||||||
|
#define reg_lb B_reglb
|
||||||
|
#define reg_sp B_regsp
|
||||||
|
#define reg_tmp B_regtmp
|
||||||
|
#define reg_lin B_reglin
|
||||||
|
#define reg_fil B_regfil
|
||||||
|
|
||||||
#include "ctype.h"
|
#include "ctype.h"
|
||||||
#include "mach_em.h"
|
#include "mach_em.h"
|
||||||
|
@ -16,9 +94,9 @@ mach.h
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
#if RESOLV_debug
|
#if RESOLV_debug
|
||||||
#define debug 0
|
#define debug 0
|
||||||
#else
|
#else
|
||||||
extern int debug;
|
extern int debug;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* MACH_H */
|
#endif /* MACH_H */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#define DEBUG 1
|
#undef DEBUG 1
|
||||||
#include <sun4/asm_linkage.h>
|
#include <sun4/asm_linkage.h>
|
||||||
|
|
||||||
#define BYTES_REVERSED
|
#define BYTES_REVERSED
|
||||||
|
@ -55,5 +55,7 @@
|
||||||
#define MATH_DIVIDE 1
|
#define MATH_DIVIDE 1
|
||||||
|
|
||||||
#ifndef DEBUG
|
#ifndef DEBUG
|
||||||
|
#undef arg_error
|
||||||
#define arg_error(s,i)
|
#define arg_error(s,i)
|
||||||
|
#define RESOLV_debug 1
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,6 +5,9 @@ misc.h
|
||||||
#ifndef MISC_H
|
#ifndef MISC_H
|
||||||
#define MISC_H
|
#define MISC_H
|
||||||
|
|
||||||
|
#define power_of_2 B_power_of_2
|
||||||
|
#define uns_power_of_2 B_uns_power_of_2
|
||||||
|
|
||||||
_PROTOTYPE( int power_of_2, (int n, int *ref_exp));
|
_PROTOTYPE( int power_of_2, (int n, int *ref_exp));
|
||||||
|
|
||||||
#endif /* MISC_H */
|
#endif /* MISC_H */
|
||||||
|
|
|
@ -5,6 +5,12 @@
|
||||||
|
|
||||||
#include "push_pop.h"
|
#include "push_pop.h"
|
||||||
|
|
||||||
|
#define init_reg_man B_init_reg_man
|
||||||
|
#define free_all_reg_vars B_free_all_reg_vars
|
||||||
|
#define alloc_all_reg_vars B_alloc_all_reg_vars
|
||||||
|
#define load_float_regs B_load_float_regs
|
||||||
|
#define find_local B_find_local
|
||||||
|
|
||||||
_PROTOTYPE(reg_t find_local, (int, reg_t*));
|
_PROTOTYPE(reg_t find_local, (int, reg_t*));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -17,8 +17,6 @@ typedef struct cache_elt {
|
||||||
arith cst;
|
arith cst;
|
||||||
} cache_elt;
|
} cache_elt;
|
||||||
|
|
||||||
#define REG_NUM(r) (((char(*)[8])(r))-regnam)
|
|
||||||
|
|
||||||
#define T_cst 1
|
#define T_cst 1
|
||||||
#define T_ext 2
|
#define T_ext 2
|
||||||
#define T_reg 4
|
#define T_reg 4
|
||||||
|
|
Loading…
Reference in a new issue