// Durante la lezione di Riallinamento di Architettura abbiamo visto insieme una nuova // micro istruzione che abbiamo chiamato IADDN. // IADDN byte // prevede di estrarre dallo stack n numeri e sommarli tra loro. // Ora Raffaele Esposito propone una soluzione simile alla seguente // (modificata per risparmiare un ciclo). provata sebra funzionare, per n > 1. // Per quali altri valori di n funziona correttamente? iaddn1 PC = PC + 1;fetch iaddn2 OPC = MBRU - 1 iaddn3 H = TOS iaddn4 Z = OPC; if (Z) goto iaddn8; else goto iaddn5 iaddn5 MAR = SP = SP - 1; rd iaddn6 OPC = OPC - 1 iaddn7 H = H + MDR; goto iaddn4 iaddn8 TOS = MDR = H; wr; goto Main1 // // prova iaddn // .main BIPUSH 3 BIPUSH 4 BIPUSH 1 BIPUSH 1 IADDN 4 BIPUSH 0x30 IADD OUT HALT .end-main