commit 54b136b

neauoire  ·  2023-08-29 16:47:53 +0000 UTC
parent 71490d7
(uxn.c) Simpler opc form
1 files changed,  +7, -7
+7, -7
 1@@ -42,14 +42,14 @@ uxn_eval(Uxn *u, Uint16 pc)
 2 		int k = ins & 0x80 ? 0xff : 0;
 3 		Stack *s = ins & 0x40 ? &u->rst : &u->wst;
 4 		Uint8 *ptr = s->dat + s->ptr - 1;
 5-		switch(ins & 0x1f ? ins & 0x3f : (0 - (ins >> 5))) {
 6+		switch(ins & 0x1f ? ins & 0x3f : ins << 4) {
 7 			/* IMM */
 8-			case -0:   /* BRK  */                           return 1;
 9-			case -1:   /* JCI  */                           if(!s->dat[--s->ptr]) { pc += 2; break; } /* else fallthrough */
10-			case -2:   /* JMI  */                           pc += PEEK2(ram + pc) + 2; break;
11-			case -3:   /* JSI  */                 SET(0, 2) PUT2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
12-			case -4:   /* LITr */ case -6:        SET(0, 1) PUT1(ram[pc++]) break;
13-			case -5:   /* LIT2r*/ case -7:        SET(0, 2) PUT2(PEEK2(ram + pc)) pc += 2; break;
14+			case 0x000: /* BRK  */                          return 1;
15+			case 0x200: /* JCI  */                          if(!s->dat[--s->ptr]) { pc += 2; break; } /* else fallthrough */
16+			case 0x400: /* JMI  */                          pc += PEEK2(ram + pc) + 2; break;
17+			case 0x600: /* JSI  */                SET(0, 2) PUT2(pc + 2) pc += PEEK2(ram + pc) + 2; break;
18+			case 0x800: /* LIT  */ case 0xc00:    SET(0, 1) PUT1(ram[pc++]) break;
19+			case 0xa00: /* LIT2 */ case 0xe00:    SET(0, 2) PUT2(PEEK2(ram + pc)) pc += 2; break;
20 			/* ALU */
21 			case 0x01: /* INC  */ t=T;            SET(1, 0) PUT1(t + 1) break;
22 			case 0x21: /* INC2 */ t=T2;           SET(2, 0) PUT2(t + 1) break;