generator is finished with a register; use this to create some more effective peephole optimiser rules.
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
 | |
| /* 8080 desciptor table for ACK target optimizer */
 | |
| 
 | |
| MAXOP 2;
 | |
| 
 | |
| %%;
 | |
| 
 | |
| X, Y, Z             { TRUE };
 | |
| %%;
 | |
| 
 | |
| mvi X, Y : mov X, Z          -> mov X, Z ;
 | |
| 
 | |
| xchg : inx h : xchg          -> inx d ;
 | |
| xchg : inx d : xchg          -> inx h ;
 | |
| 
 | |
| adi 0                        -> xra a ;
 | |
| ori 0                        -> ora a ;
 | |
| xri 0                        -> ora a ;
 | |
| adi 0                        -> ora a ;
 | |
| sui 0                        -> ora a ;
 | |
| cpi 0                        -> ora a ;
 | |
| call X : ret                 -> jmp X ;
 | |
| 
 | |
| push h : lxi h, X : pop d    -> lxi d, X : xchg ;
 | |
| push d : lxi d, X : pop h    -> lxi h, X : xchg ;
 | |
| 
 | |
| push h : lhld X : pop d      -> xchg : lhld X ;
 | |
| 
 | |
| X -1                         -> X 255 ;
 | |
| X -2                         -> X 254 ;
 | |
| X -3                         -> X 253 ;
 | |
| X -4                         -> X 252 ;
 | |
| 
 | |
| mov a, X : adi -4 : mov X, a : kill a -> dcr X : dcr X : dcr X : dcr X;
 | |
| mov a, X : adi -3 : mov X, a : kill a -> dcr X : dcr X : dcr X ;
 | |
| mov a, X : adi -2 : mov X, a : kill a -> dcr X : dcr X ;
 | |
| mov a, X : adi -1 : mov X, a : kill a -> dcr X ;
 | |
| mov a, X : adi 0 : mov X, a : kill a -> ;
 | |
| mov a, X : adi 1 : mov X, a : kill a -> inr X ;
 | |
| mov a, X : adi 2 : mov X, a : kill a -> inr X : inr X ;
 | |
| mov a, X : adi 3 : mov X, a : kill a -> inr X : inr X : inr X ;
 | |
| mov a, X : adi 4 : mov X, a : kill a -> inr X : inr X : inr X : inr X;
 | |
| 
 | |
| mov a, X : sbi -4 : mov X, a : kill a -> inr X : inr X : inr X : inr X;
 | |
| mov a, X : sbi -3 : mov X, a : kill a -> inr X : inr X : inr X ;
 | |
| mov a, X : sbi -2 : mov X, a : kill a -> inr X : inr X ;
 | |
| mov a, X : sbi -1 : mov X, a : kill a -> inr X ;
 | |
| mov a, X : sbi 0 : mov X, a : kill a -> ;
 | |
| mov a, X : sbi 1 : mov X, a : kill a -> dcr X ;
 | |
| mov a, X : sbi 2 : mov X, a : kill a -> dcr X : dcr X ;
 | |
| mov a, X : sbi 3 : mov X, a : kill a -> dcr X : dcr X : dcr X ;
 | |
| mov a, X : sbi 4 : mov X, a : kill a -> dcr X : dcr X : dcr X : dcr X ;
 | |
| 
 | |
| mov a, X : ani 0 : mov X, a : kill a -> mvi X, 0 ;
 | |
| mov a, X : ani 255 : mov X, a : kill a -> ;
 | |
| 
 | |
| mov a, X : ori 0 : mov X, a : kill a -> ;
 | |
| mov a, X : ori 255 : mov X, a : kill a -> mvi X, 255 ;
 | |
| 
 | |
| mov a, X : xri 0 : mov X, a : kill a -> ;
 | |
| 
 | |
| %%;
 |