88fd7b3cdc
generator is finished with a register; use this to create some more effective peephole optimiser rules.
63 lines
2.1 KiB
Plaintext
63 lines
2.1 KiB
Plaintext
|
|
/* 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 -> ;
|
|
|
|
%%;
|