Traduciamo in Mic-3 il seguente codice SP=TOS loop OPC=OPC-1; if (Z) goto end //uso OPC come contatore SP=SP+TOS; goto loop //sommo TOS ad SP, OPC volte end m1 A=TOS m2 C=A loop SP=C B=OPC (*) m4 C=B-1 A=SP B=TOS if (Z) goto end (**) m5 C=A+B OPC=C goto loop end (*) B=OPC non si puo' far eseguire in m2, come sembrerebbe, poiche' se saltiamo a loop dopo aver eseguito m5, si creerebbe un'inconsistenza con C=A. Notare come SP=C sia l'ultima fase di SP=TOS la prima volta che eseguiamo l'istruzione di etichetta loop, mentre e' l'ultima fase di SP=SP+TOS quando andiamo a loop da m5. Questo fa si che si possa eseguire il "goto loop" gia' in m5. (**) Sembrerebbe che non si possa eseguire A=SP B=TOS in m4, poiche' sono la prima fase di SP=SP+TOS, e tale istruzione va eseguita solo se la condizione del salto e' falsa. In questo caso particolare, pero', possiamo farlo, poiche'quando saltiamo ad end non dobbiamo fare piu' nulla, e quindi non importa se A=SP B=TOS viene comunque fatto a vuoto in caso di condizione verificata.