some minor improvements
This commit is contained in:
parent
c9f7d845a2
commit
285654f044
1 changed files with 120 additions and 131 deletions
|
@ -214,6 +214,9 @@ bpreg_off = Xbpreg_off + Rbpreg_off
|
||||||
halfindir = reg_off + bpreg_off + ADDR_LOCAL
|
halfindir = reg_off + bpreg_off + ADDR_LOCAL
|
||||||
a_word = rmorconst + rm1 + halfindir
|
a_word = rmorconst + rm1 + halfindir
|
||||||
no_reg_off = rmorconst + rm1 + ADDR_LOCAL
|
no_reg_off = rmorconst + rm1 + ADDR_LOCAL
|
||||||
|
#ifdef REGVARS
|
||||||
|
uses_bx = ADDREG + Xreg_off + Xbpreg_off
|
||||||
|
#endif
|
||||||
|
|
||||||
CODE:
|
CODE:
|
||||||
|
|
||||||
|
@ -458,6 +461,9 @@ sti $1==1 | addreg regorconst12 |
|
||||||
... | reg_off regorconst12 |
|
... | reg_off regorconst12 |
|
||||||
remove(referals)
|
remove(referals)
|
||||||
move(%[2],{ind_regoff1,%[1.reg],%[1.off]}) | | |
|
move(%[2],{ind_regoff1,%[1.reg],%[1.off]}) | | |
|
||||||
|
... | reg_off regorconst12 |
|
||||||
|
remove(referals)
|
||||||
|
move(%[2],{ind_regoff1,%[1.reg],%[1.off]}) | | |
|
||||||
... | bpreg_off regorconst12 |
|
... | bpreg_off regorconst12 |
|
||||||
remove(all_locals)
|
remove(all_locals)
|
||||||
remove(indexed)
|
remove(indexed)
|
||||||
|
@ -469,7 +475,7 @@ sti $1==1 | addreg regorconst12 |
|
||||||
remove(indexed)
|
remove(indexed)
|
||||||
remove(locals,
|
remove(locals,
|
||||||
%[ind]<=%[1.ind] && %[ind]+%[size]>%[1.ind] )
|
%[ind]<=%[1.ind] && %[ind]+%[size]>%[1.ind] )
|
||||||
move(%[2],{ind_regoff1, bp, tostring(%[1.ind])})
|
move(%[2],{LOCAL1, %[1.ind], 1})
|
||||||
| | |
|
| | |
|
||||||
sti $1==4 | addreg regorconst regorconst |
|
sti $1==4 | addreg regorconst regorconst |
|
||||||
remove(referals)
|
remove(referals)
|
||||||
|
@ -1490,26 +1496,39 @@ cfu | CXREG DXREG |
|
||||||
cff | CXREG DXREG |
|
cff | CXREG DXREG |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"call .cff" | | |
|
"call .cff" | | |
|
||||||
loc loc cii $1==1 && $2==2 | ACC |
|
loc loc cii $1==1 && $2==2 | X_ACC |
|
||||||
"cbw"
|
"cbw"
|
||||||
samecc | ax | |(1,2)
|
samecc | ax | |(1,2)
|
||||||
... | ACC1 |
|
... | rmorconst1 |
|
||||||
|
allocate(%[1], ACC1 = %[1])
|
||||||
"cbw"
|
"cbw"
|
||||||
samecc | ax | |(1,2)
|
samecc | ax | |(1,2)
|
||||||
loc loc cii $1==1 && $2==4 | ACC |
|
... | nocoercions: rmorconst1 ACC+ACC1 |
|
||||||
|
allocate(%[2],ACC1,REG)
|
||||||
|
move(%[2],%[b])
|
||||||
|
move(%[1],%[a])
|
||||||
|
"cbw"
|
||||||
|
samecc | ax %[b] | |(1,2)
|
||||||
|
... | nocoercions: rmorconst ACC+ACC1 |
|
||||||
|
allocate(%[2],ACC,REG)
|
||||||
|
move(%[2],%[b])
|
||||||
|
move(%[1],%[a])
|
||||||
|
"cbw"
|
||||||
|
samecc | ax %[b] | |(1,2)
|
||||||
|
loc loc cii $1==1 && $2==4 | X_ACC |
|
||||||
allocate(DXREG)
|
allocate(DXREG)
|
||||||
"cbw"
|
"cbw"
|
||||||
"cwd"
|
"cwd"
|
||||||
samecc | dx ax | |(2,7)
|
samecc | %[a] ax | |(2,7)
|
||||||
... | ACC1 |
|
... | rmorconst1 |
|
||||||
allocate(DXREG)
|
allocate(%[1], ACC1 = %[1], DXREG)
|
||||||
"cbw"
|
"cbw"
|
||||||
"cwd"
|
"cwd"
|
||||||
samecc | dx ax | |(2,7)
|
samecc | dx ax | |(2,7)
|
||||||
loc loc cii $1==2 && $2==4 | ACC |
|
loc loc cii $1==2 && $2==4 | ACC |
|
||||||
allocate(DXREG)
|
allocate(DXREG)
|
||||||
"cwd"
|
"cwd"
|
||||||
samecc | dx ax | |(1,5)
|
samecc | %[a] ax | |(1,5)
|
||||||
loc loc cii $1==4 && $2==2 | a_word a_word | | %[1] | |
|
loc loc cii $1==4 && $2==2 | a_word a_word | | %[1] | |
|
||||||
loc loc ciu | | | | loc $1 loc $2 cuu |
|
loc loc ciu | | | | loc $1 loc $2 cuu |
|
||||||
loc loc cui | | | | loc $1 loc $2 cuu |
|
loc loc cui | | | | loc $1 loc $2 cuu |
|
||||||
|
@ -1730,12 +1749,10 @@ inn !defined($1)| CXREG X_ACC |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"call .inn"
|
"call .inn"
|
||||||
erase(%[2]) | ax | |
|
erase(%[2]) | ax | |
|
||||||
loc inn zeq $2==2 | rm |
|
loc inn zeq $2==2 | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"test %[1],%(1<<$1%)"
|
"test %[1],%(1<<$1%)"
|
||||||
"je $3" | | |
|
"je $3" | | |
|
||||||
loc inn zne $2==2 | rm |
|
loc inn zne $2==2 | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"test %[1],%(1<<$1%)"
|
"test %[1],%(1<<$1%)"
|
||||||
"jne $3" | | |
|
"jne $3" | | |
|
||||||
set $1==2 | SHIFT_CREG |
|
set $1==2 | SHIFT_CREG |
|
||||||
|
@ -1783,10 +1800,33 @@ lae aar $2==2 && defined(rom(1,1)) | X_ACC |
|
||||||
loc sli ads $1==1 && $2==2 && $3==2 | X_ADDREG |
|
loc sli ads $1==1 && $2==2 && $3==2 | X_ADDREG |
|
||||||
"sal %[1],1"
|
"sal %[1],1"
|
||||||
erase(%[1]) | %[1] | ads 2 |
|
erase(%[1]) | %[1] | ads 2 |
|
||||||
|
#ifdef REGVARS
|
||||||
|
... | nocoercions: rmorconst uses_bx |
|
||||||
|
allocate(%[2],REG=%[2],ADDREG=%[1])
|
||||||
|
"sal %[b],1"
|
||||||
|
erase(%[b]) | %[b] %[a] | ads 2 |
|
||||||
|
#endif
|
||||||
loc sli ads $1==2 && $2==2 && $3==2 | X_ADDREG |
|
loc sli ads $1==2 && $2==2 && $3==2 | X_ADDREG |
|
||||||
"sal %[1],1"
|
"sal %[1],1"
|
||||||
"sal %[1],1"
|
"sal %[1],1"
|
||||||
erase(%[1]) | %[1] | ads 2 |
|
erase(%[1]) | %[1] | ads 2 |
|
||||||
|
#ifdef REGVARS
|
||||||
|
... | nocoercions: rmorconst uses_bx |
|
||||||
|
allocate(%[2],REG=%[2],ADDREG=%[1])
|
||||||
|
"sal %[b],1"
|
||||||
|
"sal %[b],1"
|
||||||
|
erase(%[b]) | %[b] %[a] | ads 2 |
|
||||||
|
#endif
|
||||||
|
loc sli ads $2==2 && $3==2 | X_ADDREG |
|
||||||
|
allocate(CXREG={ANYCON, $1})
|
||||||
|
"sal %[1],cl"
|
||||||
|
erase(%[1]) | %[1] | ads 2 |
|
||||||
|
#ifdef REGVARS
|
||||||
|
... | nocoercions: rmorconst uses_bx |
|
||||||
|
allocate(%[2],REG=%[2],ADDREG=%[1],CXREG={ANYCON,$1})
|
||||||
|
"sal %[b],cl"
|
||||||
|
erase(%[b]) | %[b] %[a] | ads 2 |
|
||||||
|
#endif
|
||||||
aar $1==2 | halfindir X_ACC X_ADDREG |
|
aar $1==2 | halfindir X_ACC X_ADDREG |
|
||||||
allocate(DXREG)
|
allocate(DXREG)
|
||||||
"sub %[2],%[1]"
|
"sub %[2],%[1]"
|
||||||
|
@ -2030,7 +2070,7 @@ cmi tlt $1==2 | regorconst rm |
|
||||||
"jge 1f"
|
"jge 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jle 1f"
|
"jle 1f"
|
||||||
|
@ -2042,7 +2082,7 @@ cmi tle $1==2 | regorconst rm |
|
||||||
"jg 1f"
|
"jg 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jl 1f"
|
"jl 1f"
|
||||||
|
@ -2054,7 +2094,7 @@ cmi teq $1==2 | regorconst rm |
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
|
@ -2066,7 +2106,7 @@ cmi tne $1==2 | regorconst rm |
|
||||||
"je 1f"
|
"je 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"je 1f"
|
"je 1f"
|
||||||
|
@ -2078,7 +2118,7 @@ cmi tge $1==2 | regorconst rm |
|
||||||
"jl 1f"
|
"jl 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jg 1f"
|
"jg 1f"
|
||||||
|
@ -2090,7 +2130,7 @@ cmi tgt $1==2 | regorconst rm |
|
||||||
"jle 1f"
|
"jle 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jge 1f"
|
"jge 1f"
|
||||||
|
@ -2102,7 +2142,7 @@ cmp tlt | regorconst rm |
|
||||||
"jae 1f"
|
"jae 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jbe 1f"
|
"jbe 1f"
|
||||||
|
@ -2114,7 +2154,7 @@ cmp tle | regorconst rm |
|
||||||
"ja 1f"
|
"ja 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jb 1f"
|
"jb 1f"
|
||||||
|
@ -2126,7 +2166,7 @@ cmp teq | regorconst rm |
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
|
@ -2138,7 +2178,7 @@ cmp tne | regorconst rm |
|
||||||
"je 1f"
|
"je 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"je 1f"
|
"je 1f"
|
||||||
|
@ -2150,7 +2190,7 @@ cmp tge | regorconst rm |
|
||||||
"jb 1f"
|
"jb 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"ja 1f"
|
"ja 1f"
|
||||||
|
@ -2162,7 +2202,7 @@ cmp tgt | regorconst rm |
|
||||||
"jbe 1f"
|
"jbe 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jae 1f"
|
"jae 1f"
|
||||||
|
@ -2174,7 +2214,7 @@ cms teq $1==2 | regorconst rm |
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
|
@ -2186,122 +2226,97 @@ cms tne $1==2 | regorconst rm |
|
||||||
"je 1f"
|
"je 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst |
|
||||||
allocate(REG={ANYCON,0})
|
allocate(REG={ANYCON,0})
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"je 1f"
|
"je 1f"
|
||||||
"inc %[a]\n1:"
|
"inc %[a]\n1:"
|
||||||
erase(%[a]) | %[a] | |
|
erase(%[a]) | %[a] | |
|
||||||
cmp zlt | regorconst rm |
|
cmp zlt | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jb $2" | | |
|
"jb $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"ja $2" | | |
|
"ja $2" | | |
|
||||||
cmp zle | regorconst rm |
|
cmp zle | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jbe $2" | | |
|
"jbe $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jae $2" | | |
|
"jae $2" | | |
|
||||||
cmp zeq | regorconst rm |
|
cmp zeq | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"je $2" | | |
|
"je $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"je $2" | | |
|
"je $2" | | |
|
||||||
cmp zne | regorconst rm |
|
cmp zne | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
cmp zge | regorconst rm |
|
cmp zge | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jae $2" | | |
|
"jae $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jbe $2" | | |
|
"jbe $2" | | |
|
||||||
cmp zgt | regorconst rm |
|
cmp zgt | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"ja $2" | | |
|
"ja $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jb $2" | | |
|
"jb $2" | | |
|
||||||
cms zeq $1==2 | regorconst rm |
|
cms zeq $1==2 | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"je $2" | | |
|
"je $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"je $2" | | |
|
"je $2" | | |
|
||||||
cms zne $1==2 | regorconst rm |
|
cms zne $1==2 | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
cms zne $1==4 | regorconst regorconst rm rm |
|
cms zne $1==4 | regorconst regorconst rm rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[3],%[1]"
|
"cmp %[3],%[1]"
|
||||||
"jne $2"
|
"jne $2"
|
||||||
"cmp %[4],%[2]"
|
"cmp %[4],%[2]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
... | NO rm rm regorconst regorconst |
|
... | rm rm regorconst regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[3]"
|
"cmp %[1],%[3]"
|
||||||
"jne $2"
|
"jne $2"
|
||||||
"cmp %[2],%[4]"
|
"cmp %[2],%[4]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
cms zeq $1==4 | regorconst regorconst rm rm |
|
cms zeq $1==4 | regorconst regorconst rm rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[3],%[1]"
|
"cmp %[3],%[1]"
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
"cmp %[4],%[2]"
|
"cmp %[4],%[2]"
|
||||||
"je $2\n1:" | | |
|
"je $2\n1:" | | |
|
||||||
... | NO rm rm regorconst regorconst |
|
... | rm rm regorconst regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[3]"
|
"cmp %[1],%[3]"
|
||||||
"jne 1f"
|
"jne 1f"
|
||||||
"cmp %[2],%[4]"
|
"cmp %[2],%[4]"
|
||||||
"je $2\n1:" | | |
|
"je $2\n1:" | | |
|
||||||
and zeq $1==2 | regorconst rm |
|
and zeq $1==2 | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"test %[2],%[1]"
|
"test %[2],%[1]"
|
||||||
"je $2" | | |
|
"je $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"test %[1],%[2]"
|
"test %[1],%[2]"
|
||||||
"je $2" | | |
|
"je $2" | | |
|
||||||
and zne $1==2 | regorconst rm |
|
and zne $1==2 | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"test %[2],%[1]"
|
"test %[2],%[1]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"test %[1],%[2]"
|
"test %[1],%[2]"
|
||||||
"jne $2" | | |
|
"jne $2" | | |
|
||||||
loc and zeq $1<256 && $1>=0 && $2==2 | nocoercions : rm1 + memory2 |
|
loc and zeq $1<256 && $1>=0 && $2==2 | nocoercions : rm1 + memory2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"testb %[1],$1"
|
"testb %[1],$1"
|
||||||
"je $3" | | | (1,3) + %[1]
|
"je $3" | | | (1,3) + %[1]
|
||||||
... | GENREG |
|
... | GENREG STACK |
|
||||||
remove(ALL)
|
|
||||||
"testb %[1.1],$1"
|
"testb %[1.1],$1"
|
||||||
"je $3" | | | (1,3) + %[1]
|
"je $3" | | | (1,3) + %[1]
|
||||||
... | nocoercions : IREG |
|
... | nocoercions : IREG |
|
||||||
|
@ -2312,8 +2327,7 @@ loc and zne $1<256 && $1>=0 && $2==2 | nocoercions : rm1 + memory2 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"testb %[1],$1"
|
"testb %[1],$1"
|
||||||
"jne $3" | | | (1,3) + %[1]
|
"jne $3" | | | (1,3) + %[1]
|
||||||
... | GENREG |
|
... | GENREG STACK |
|
||||||
remove(ALL)
|
|
||||||
"testb %[1.1],$1"
|
"testb %[1.1],$1"
|
||||||
"jne $3" | | | (1,3) + %[1]
|
"jne $3" | | | (1,3) + %[1]
|
||||||
... | nocoercions : IREG |
|
... | nocoercions : IREG |
|
||||||
|
@ -2324,16 +2338,14 @@ loc beq $1<256 && $1>=0 | nocoercions : rm1 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"cmpb %[1],$1"
|
"cmpb %[1],$1"
|
||||||
"je $2" | | | (1,3) + %[1]
|
"je $2" | | | (1,3) + %[1]
|
||||||
... | rm |
|
... | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],$1"
|
"cmp %[1],$1"
|
||||||
"je $2" | | | (2,3) + %[1]
|
"je $2" | | | (2,3) + %[1]
|
||||||
loc bne $1<256 && $1>=0 | nocoercions : rm1 |
|
loc bne $1<256 && $1>=0 | nocoercions : rm1 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"cmpb %[1],$1"
|
"cmpb %[1],$1"
|
||||||
"jne $2" | | | (1,3) + %[1]
|
"jne $2" | | | (1,3) + %[1]
|
||||||
... | rm |
|
... | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],$1"
|
"cmp %[1],$1"
|
||||||
"jne $2" | | | (2,3) + %[1]
|
"jne $2" | | | (2,3) + %[1]
|
||||||
/* Note: test for <,<=,>,>= can be done in this way,
|
/* Note: test for <,<=,>,>= can be done in this way,
|
||||||
|
@ -2342,16 +2354,14 @@ loc cmu zeq $1<256 && $1>=0 && $2==2 | nocoercions : rm1 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"cmpb %[1],$1"
|
"cmpb %[1],$1"
|
||||||
"je $3" | | | (1,3) + %[1]
|
"je $3" | | | (1,3) + %[1]
|
||||||
... | rm |
|
... | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],$1"
|
"cmp %[1],$1"
|
||||||
"je $3" | | | (2,3) + %[1]
|
"je $3" | | | (2,3) + %[1]
|
||||||
loc cmu zne $1<256 && $1>=0 && $2==2 | nocoercions : rm1 |
|
loc cmu zne $1<256 && $1>=0 && $2==2 | nocoercions : rm1 |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
"cmpb %[1],$1"
|
"cmpb %[1],$1"
|
||||||
"jne $3" | | | (1,3) + %[1]
|
"jne $3" | | | (1,3) + %[1]
|
||||||
... | rm |
|
... | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],$1"
|
"cmp %[1],$1"
|
||||||
"jne $3" | | | (2,3) + %[1]
|
"jne $3" | | | (2,3) + %[1]
|
||||||
|
|
||||||
|
@ -2362,76 +2372,58 @@ loc cmu zne $1<256 && $1>=0 && $2==2 | nocoercions : rm1 |
|
||||||
bra | | remove(ALL)
|
bra | | remove(ALL)
|
||||||
"jmp $1"
|
"jmp $1"
|
||||||
samecc | | |
|
samecc | | |
|
||||||
blt | regorconst rm |
|
blt | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jl $1" | | |
|
"jl $1" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jg $1" | | |
|
"jg $1" | | |
|
||||||
ble | regorconst rm |
|
ble | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jle $1" | | |
|
"jle $1" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jge $1" | | |
|
"jge $1" | | |
|
||||||
beq | regorconst rm |
|
beq | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"je $1" | | |
|
"je $1" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"je $1" | | |
|
"je $1" | | |
|
||||||
bne | regorconst rm |
|
bne | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jne $1" | | |
|
"jne $1" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jne $1" | | |
|
"jne $1" | | |
|
||||||
bge | regorconst rm |
|
bge | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jge $1" | | |
|
"jge $1" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jle $1" | | |
|
"jle $1" | | |
|
||||||
bgt | regorconst rm |
|
bgt | regorconst rm STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[2],%[1]"
|
"cmp %[2],%[1]"
|
||||||
"jg $1" | | |
|
"jg $1" | | |
|
||||||
... | NO rm regorconst |
|
... | rm regorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],%[2]"
|
"cmp %[1],%[2]"
|
||||||
"jl $1" | | |
|
"jl $1" | | |
|
||||||
zlt | rm |
|
zlt | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
test(%[1])
|
test(%[1])
|
||||||
"jl $1" | | |
|
"jl $1" | | |
|
||||||
zle | rm |
|
zle | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
test(%[1])
|
test(%[1])
|
||||||
"jle $1" | | |
|
"jle $1" | | |
|
||||||
zeq | rm+rm1 |
|
zeq | rm+rm1 STACK |
|
||||||
remove(ALL)
|
|
||||||
test(%[1])
|
test(%[1])
|
||||||
"je $1" | | |
|
"je $1" | | |
|
||||||
zne | rm+rm1 |
|
zne | rm+rm1 STACK |
|
||||||
remove(ALL)
|
|
||||||
test(%[1])
|
test(%[1])
|
||||||
"jne $1" | | |
|
"jne $1" | | |
|
||||||
zge | rm |
|
zge | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
test(%[1])
|
test(%[1])
|
||||||
"jge $1" | | |
|
"jge $1" | | |
|
||||||
zgt | rm |
|
zgt | rm STACK |
|
||||||
remove(ALL)
|
|
||||||
test(%[1])
|
test(%[1])
|
||||||
"jg $1" | | |
|
"jg $1" | | |
|
||||||
|
|
||||||
|
@ -2513,13 +2505,11 @@ asp $1==4 | nocoercions : a_word a_word | | | |
|
||||||
"pop %[a]" "pop %[a]"
|
"pop %[a]" "pop %[a]"
|
||||||
erase(%[a]) samecc | | | (2,16)
|
erase(%[a]) samecc | | | (2,16)
|
||||||
asp $1==0-2 | | /* Anything will do */ | bp | |
|
asp $1==0-2 | | /* Anything will do */ | bp | |
|
||||||
asp | | remove(ALL)
|
asp | STACK |
|
||||||
"add sp,$1" | | | (4,4)
|
"add sp,$1" | | | (4,4)
|
||||||
ass $1==2 | rmorconst |
|
ass $1==2 | rmorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"add sp,%[1]" | | |
|
"add sp,%[1]" | | |
|
||||||
ass !defined($1)| rm rmorconst |
|
ass !defined($1)| rm rmorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"cmp %[1],2"
|
"cmp %[1],2"
|
||||||
"jne .unknown"
|
"jne .unknown"
|
||||||
"add sp,%[2]" | | |
|
"add sp,%[2]" | | |
|
||||||
|
@ -2602,7 +2592,7 @@ lim | | allocate(REG)
|
||||||
lin | | "mov (hol0),$1" | | |
|
lin | | "mov (hol0),$1" | | |
|
||||||
lni | | "inc (hol0)" | | |
|
lni | | "inc (hol0)" | | |
|
||||||
lor $1==0 | | | bp | |
|
lor $1==0 | | | bp | |
|
||||||
lor $1==1 | | remove(ALL)
|
lor $1==1 | STACK |
|
||||||
allocate(REG)
|
allocate(REG)
|
||||||
"mov %[a],sp" | %[a] | |
|
"mov %[a],sp" | %[a] | |
|
||||||
lor $1==2 | | allocate(REG)
|
lor $1==2 | | allocate(REG)
|
||||||
|
@ -2626,8 +2616,7 @@ sim | regorconst |
|
||||||
"mov (.ignmask),%[1]" | | |
|
"mov (.ignmask),%[1]" | | |
|
||||||
str $1==0 | rmorconst |
|
str $1==0 | rmorconst |
|
||||||
"mov bp,%[1]" | | |
|
"mov bp,%[1]" | | |
|
||||||
str $1==1 | rmorconst |
|
str $1==1 | rmorconst STACK |
|
||||||
remove(ALL)
|
|
||||||
"mov sp,%[1]" | | |
|
"mov sp,%[1]" | | |
|
||||||
str $1==2 | |
|
str $1==2 | |
|
||||||
remove(ALL)
|
remove(ALL)
|
||||||
|
|
Loading…
Reference in a new issue