TOKENEXPRESSIONS:
CONST = CONST1 + CONST2 + CONST4
+ind2 = extind2 + displind2 + extdefind2 + displdefind2
+ind4 = extind4 + displind4 + extdefind4 + displdefind4
Xsource1 = regdef1 + displ1 + displdef1 +
EXTERNAL1 + reldef1 + CONST1 + LOCAL1
+ displind1 + extdefind1 + displdefind1
+ reginc1 + regdec1
#endif REGVARS
Xsource2 = regdef2 + displ2 + displdef2 +
- EXTERNAL2 + reldef2 + CONST2 + LOCAL2
- + extind2 + displind2 + extdefind2 + displdefind2
+ EXTERNAL2 + reldef2 + CONST2 + LOCAL2 + ind2
source2 = Xsource2
#ifdef REGVARS
+ reginc2 + regdec2
#endif REGVARS
Xsource4 = REG + regdef4 + displ4 + displdef4 + LocaLBase +
- EXTERNAL4 + reldef4 + CONST + DOUBLE + LOCAL4 + FCONST4
- + extind4 + displind4 + extdefind4 + displdefind4
+ EXTERNAL4 + reldef4 + CONST + DOUBLE + LOCAL4 + FCONST4 + ind4
source4 = Xsource4
#ifdef REGVARS
+ RREG + reginc4 + regdec4
#ifdef REGVARS
+ reginc8 + regdec8
#endif REGVARS
-source1or2 = source1 + source2
-source1or2or4 = source1or2 + source4
-source2or4 = source2 + source4
+source1or2 = source1 + source2 - ind2
+source1or2or4 = source1or2 + source4 - (ind2 + ind4)
+source2or4 = source2 + source4 - ind4
nonexist1 = adispl + ADDR_EXTERNAL + ADDR_LOCAL
aextind = aextind2 + aextind4 + aextind8
adisplind = adisplind1 + adisplind2 + adisplind4 + adisplind8
aextdefind = aextdefind1 + aextdefind2 + aextdefind4 + aextdefind8
adispldefind = adispldefind1 + adispldefind2 + adispldefind4 + adispldefind8
-ind2 = extind2 + displind2 + extdefind2 + displdefind2
-ind4 = extind4 + displind4 + extdefind4 + displdefind4
aind1 = adisplind1 + aextdefind1 + adispldefind1
aind2 = aextind2 + adisplind2 + aextdefind2 + adispldefind2
aind4 = aextind4 + adisplind4 + aextdefind4 + adispldefind4
#endif REGVARS
sreg4 = REG * SCRATCH
sreg8 = QREG * SCRATCH
-bigsource4 = source1or2or4 + nonexist
+bigsource4 = source1or2or4 + nonexist + ind2 + ind4
bigsource8 = source8
all = bigsource4 + bigsource8
scr = ALL - (EXTERNALS + LOCALS + ADDR_LOCAL + ADDR_EXTERNAL + CONST
remove(ALL)
move(%[1],R0)
"jsb\t.ngi" | | |
-sli $1==4 | source1or2or4 source1or2or4 |
+sli $1==4 | source1or2or4 source4 |
allocate(%[1],%[2],REG)
"ashl\t%[1],%[2],%[a]"
setcc(%[a]) | %[a] | | (4,4)+%[1]+%[2]
#ifdef REGVARS
sli stl $1==4 && inreg($2)==2
- | source4 source4 |
+ | source1or2or4 source4 |
remove(regvar($2))
"ashl\t%[1],%[2],%(regvar($2)%)"
erase(regvar($2))
setcc(regvar($2)) | | |
#endif REGVARS
sli stl $1==4 && $2<0
- | source4 source4 |
+ | source1or2or4 source4 |
remove(displaced)
remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"ashl\t%[1],%[2],$2(fp)"
setcc({LOCAL4,LB,$2,4}) | | |
sli stl $1==4 && $2>=0
- | source4 source4 |
+ | source1or2or4 source4 |
remove(displaced)
remove(LOCALS,(%[num] <= $2+3 && %[num]+%[size] > $2))
"ashl\t%[1],%[2],$2(ap)"
setcc({LOCAL4,AP,$2,4}) | | |
#ifdef REGVARS
sli sil $1==4 && inreg($2)==2
- | source4 source4 |
+ | source1or2or4 source4 |
REMEXTANDLOC
"ashl\t%[1],%[2],(%(regvar($2)%))"
setcc({regdef4,regvar($2)}) | | |
sli lol stf $1==4 && inreg($2)==2
- | source4 source4 |
+ | source1or2or4 source4 |
REMEXTANDLOC
"ashl\t%[1],%[2],$3(%(regvar($2)%))"
setcc({displ4,regvar($2),tostring($3)}) | | |
#endif REGVARS
sli sil $1==4 && $2<0
- | source4 source4 |
+ | source1or2or4 source4 |
REMEXTANDLOC
"ashl\t%[1],%[2],*$2(fp)"
setcc({displdef4,LB,tostring($2)}) | | |
sli sil $1==4 && $2>=0
- | source4 source4 |
+ | source1or2or4 source4 |
REMEXTANDLOC
"ashl\t%[1],%[2],*$2(ap)"
setcc({displdef4,AP,tostring($2)}) | | |
-sli ste $1==4 | source4 source4 |
+sli ste $1==4 | source1or2or4 source4 |
remove(externals)
"ashl\t%[1],%[2],$2"
setcc({EXTERNAL4,$2}) | | | (8,10)+%[1]+%[2]
-sli !defined($1) | source4 |
+sli !defined($1) | source1or2or4 |
remove(ALL)
move(%[1],R0)
"jsb\t.sli"
adp dup loe sti adp $1==(0-$5) && $2==4 && $4==4
| reg4 | | %[1] %[1] | adp $1 loe $3 sti 4 |
dup adp lol sti $1==4 && $4==4
- | bigsource4 |
+ | bigsource4-regch4 |
allocate(REG=%[1])
| %[a] %[1] {CONST4,$2}
| adi 4 lol $3 sti 4 |
dup adp loe sti $1==4 && $4==4
- | bigsource4 |
+ | bigsource4-regch4 |
allocate(REG=%[1])
| %[a] %[1] {CONST4,$2}
| adi 4 loe $3 sti 4 |
ciu | | | | cuu |
cui | STACK |
"jsb\t.cui" | | |
-loc loc cii $1==1 && $2==2 | source1or2or4 |
- allocate(%[1],REG)
- "cvtbw\t%[1],%[a]"
- setcc(%[a]) | %[a] | |
#ifdef REGVARS
loc loc cii stl $1==1 && $2==4 && inreg($4)==2
| source1or2or4 |
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 | | {CONST1,0} | |
+... | NC source1or2-regch4 | | {CONST1,0} | |
tlt and $2==4 | source4 sreg4 |
test(%[1])
#ifdef LOCLABS
#endif
erase(%[a])
setcc(%[a]) | %[a] | |
-... | NC source1or2 | | {CONST1,1} | |
+... | NC source1or2-regch4 | | {CONST1,1} | |
tge and $2==4 | source4 sreg4 |
test(%[1])
#ifdef LOCLABS
move(%[1],R0)
"jsb\t.dus"
erase(R0) | | |
-exg $1==4 | bigsource4-source4+Xsource4 bigsource4-source4+Xsource4 | | %[1] %[2] | |
-exg $1==8 | bigsource8-source8+Xsource8 bigsource8-source8+Xsource8 | | %[1] %[2] | |
+exg $1==4 | bigsource4-regch4 bigsource4-regch4 | | %[1] %[2] | |
+exg $1==8 | bigsource8-regch8 bigsource8-regch8 | | %[1] %[2] | |
exg defined($1) | STACK |
move({CONST4,$1},R0)
"jsb\t.exg"