ldc | | | {ANYCON, highw(1)} {ANYCON, loww(1)} | |
lol | | | {LOCAL2, $1, 2} | |
loe | | | {EXTERN2, $1} | |
+loe loe $1==$2 | | allocate(ADDREG={EXTERN2, $1}) | %[a] %[a] | |
+lol lol $1==$2 | | allocate(ADDREG={LOCAL2, $1, 2})| %[a] %[a] | |
lil | | allocate(ADDREG={ind_regoff2, bp, tostring($1)})
| {ind_reg2, %[a]} | |
lof | nocoercions : reg_off |
... | X_REG |
"inc %[1]"
erase(%[1]) setcc(%[1]) | %[1] | | (1,2)
+... | X_ADDREG | | {reg_off, %[1], tostring($1)} | |
adp $1 == 0-1 | nocoercions : reg_off | |
{reg_off, %[1.reg],%[1.off]+tostring($1)} | |
... | nocoercions : ADDR_EXTERN | |
... | X_REG |
"dec %[1]"
erase(%[1]) setcc(%[1]) | %[1] | | (1,2)
+... | X_ADDREG | | {reg_off, %[1], tostring($1)} | |
adp | nocoercions : reg_off | |
{reg_off, %[1.reg],%[1.off]+"+"+tostring($1)} | |
... | nocoercions : ADDR_EXTERN | |
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"add $1(bp),%[1]"
setcc({LOCAL2, $1, 2}) | | |
+ldl adi sdl $1==$3 && $2==4 | regorconst regorconst |
+ remove(indexed)
+ remove(locals, %[ind]>=$1 && %[ind]<$1+4 )
+ "add $1(bp),%[1]"
+ "adc %($1+2%)(bp),%[2]" | | |
lol ngi stl $1==$3 && $2==2 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"neg $1(bp)"
setcc({LOCAL2, $1, 2}) | | |
+ldl ngi sdl $1==$3 && $2==4 | |
+ remove(indexed)
+ remove(locals, %[ind]>=$1 && %[ind]<$1+4 )
+ "neg $1(bp)"
+ "neg %($1+2%)(bp)"
+ "sbb %($1+2%)(bp,0" | | |
lol ads stl $1==$3 && $2==2 | regorconst |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"add $1(bp),%[1]"
setcc({LOCAL2, $1, 2}) | | |
-lol adp stl $1==$3 | |
- remove(indexed)
- remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
- "add $1(bp),$2"
- setcc({LOCAL2, $1, 2}) | | |
+lol lol adp stl $1==$2 && $1==$4 | |
+ allocate(ADDREG={LOCAL2,$1,2}) | %[a] | lol $2 adp $3 stl $2 |
lol adp stl $1==$3 && $2==1 | |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
"dec $1(bp)"
setcc({LOCAL2, $1, 2}) | | |
+lol adp stl $1==$3 | |
+ remove(indexed)
+ remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
+ "add $1(bp),$2"
+ setcc({LOCAL2, $1, 2}) | | |
lol and stl $1==$3 && $2==2 | regorconst |
remove(indexed)
remove(locals, %[ind]>=$1 && %[ind]<$1+2 )
remove(referals)
"add (%[a]),%[1]"
setcc({ind_reg2, %[a]}) | | |
-lil adp sil $1==$3 | |
- allocate(ADDREG={LOCAL2, $1, 2})
- remove(referals)
- "add (%[a]),$2"
- setcc({ind_reg2, %[a]}) | | |
lil adp sil $1==$3 && $2==1 | |
allocate(ADDREG={LOCAL2, $1, 2})
remove(referals)
remove(referals)
"dec (%[a])"
setcc({ind_reg2, %[a]}) | | |
+lil adp sil $1==$3 | |
+ allocate(ADDREG={LOCAL2, $1, 2})
+ remove(referals)
+ "add (%[a]),$2"
+ setcc({ind_reg2, %[a]}) | | |
lil and sil $1==$3 && $2==2 | regorconst |
allocate(ADDREG={LOCAL2, $1, 2})
remove(referals)
remove(indirects)
"add ($1),%[1]"
setcc({EXTERN2, $1}) | | |
+lde adi sde $1==$3 && $2==4 | regorconst regorconst |
+ remove(indirects)
+ "add ($1),%[1]"
+ "adc ($1+2),%[2]" | | |
loe ngi ste $1==$3 && $2==2 | |
remove(indirects)
"neg ($1)"
setcc({EXTERN2, $1}) | | |
+lde ngi sde $1==$3 && $2==4 | |
+ remove(indirects)
+ "neg ($1)"
+ "neg ($1+2)"
+ "sbb ($1+2),0" | | |
loe ads ste $1==$3 && $2==2 | regorconst |
remove(indirects)
"add ($1),%[1]"
setcc({EXTERN2, $1}) | | |
-loe adp ste $1==$3 | |
- remove(indirects)
- "add ($1),$2"
- setcc({EXTERN2, $1}) | | |
+loe loe adp ste $1==$4 && $1==$4 | |
+ allocate(ADDREG={EXTERN2,$1}) | %[a] | loe $1 adp $3 ste $1 |
loe adp ste $1==$3 && $2==1 | |
remove(indirects)
"inc ($1)"
remove(indirects)
"dec ($1)"
setcc({EXTERN2, $1}) | | |
+loe adp ste $1==$3 | |
+ remove(indirects)
+ "add ($1),$2"
+ setcc({EXTERN2, $1}) | | |
loe and ste $1==$3 && $2==2 | regorconst |
remove(indirects)
"and ($1),%[1]"
loc loc cii $1==1 && $2==2 | ACC |
"cbw"
samecc | ax | |(1,2)
+... | ACC1 |
+ "cbw"
+ samecc | ax | |(1,2)
loc loc cii $1==1 && $2==4 | ACC |
allocate(DXREG)
"cbw"
"cwd"
samecc | dx ax | |(2,7)
+... | ACC1 |
+ allocate(DXREG)
+ "cbw"
+ "cwd"
+ samecc | dx ax | |(2,7)
loc loc cii $1==2 && $2==4 | ACC |
allocate(DXREG)
"cwd"
"jmp .csb2"
erase(%[2]) erase(%[3]) | | |
dup $1==2 | REG | | %[1] %[1] | |
+... | ACC1 | | %[1] %[1] | |
dup $1==4 | REG REG | | %[2] %[1] %[2] %[1] | |
dup | | remove(ALL)
move({ANYCON, $1}, cx)