Browse code

(uxn.c) Cache intermediary result in POKE2 usage

neauoire authored on 30/08/2023 16:52:47
Showing 1 changed files
... ...
@@ -45,7 +45,7 @@ uxn_eval(Uxn *u, Uint16 pc)
45 45
 		int ins = ram[pc++];
46 46
 		int k = ins & 0x80 ? 0xff : 0;
47 47
 		Stack *s = ins & 0x40 ? &u->rst : &u->wst;
48
-		Uint8 *ptr = s->dat + s->ptr - 1;
48
+		Uint8 *ptr = s->dat + s->ptr - 1, *rr;
49 49
 		switch(ins & 0x1f ? ins & 0x3f : ins << 4) {
50 50
 			/* IMM */
51 51
 			case 0x000: /* BRK  */                          return 1;
... ...
@@ -88,15 +88,15 @@ uxn_eval(Uxn *u, Uint16 pc)
88 88
 			case 0x10: /* LDZ  */ t=T;            SET(1, 0) PUT1(ram[t]) break;
89 89
 			case 0x30: /* LDZ2 */ t=T;            SET(1, 1) PUT2(PEEK2(ram + t)) break;
90 90
 			case 0x11: /* STZ  */ t=T;n=N;        SET(2,-2) ram[t] = n; break;
91
-			case 0x31: /* STZ2 */ t=T;n=H2;       SET(3,-3) POKE2(ram + t, n) break;
91
+			case 0x31: /* STZ2 */ t=T;n=H2;       SET(3,-3) rr = ram + t; POKE2(rr, n) break;
92 92
 			case 0x12: /* LDR  */ t=T;            SET(1, 0) PUT1(ram[pc + (Sint8)t]) break;
93 93
 			case 0x32: /* LDR2 */ t=T;            SET(1, 1) PUT2(PEEK2(ram + pc + (Sint8)t)) break;
94 94
 			case 0x13: /* STR  */ t=T;n=N;        SET(2,-2) ram[pc + (Sint8)t] = n; break;
95
-			case 0x33: /* STR2 */ t=T;n=H2;       SET(3,-3) POKE2(ram + pc + (Sint8)t, n) break;
95
+			case 0x33: /* STR2 */ t=T;n=H2;       SET(3,-3) rr = ram + pc + (Sint8)t; POKE2(rr, n) break;
96 96
 			case 0x14: /* LDA  */ t=T2;           SET(2,-1) PUT1(ram[t]) break;
97 97
 			case 0x34: /* LDA2 */ t=T2;           SET(2, 0) PUT2(PEEK2(ram + t)) break;
98 98
 			case 0x15: /* STA  */ t=T2;n=L;       SET(3,-3) ram[t] = n; break;
99
-			case 0x35: /* STA2 */ t=T2;n=N2;      SET(4,-4) POKE2(ram + t, n) break;
99
+			case 0x35: /* STA2 */ t=T2;n=N2;      SET(4,-4) rr = ram + t; POKE2(rr, n) break;
100 100
 			case 0x16: /* DEI  */ t=T;            SET(1, 0) PUT1(DEI(t)) break;
101 101
 			case 0x36: /* DEI2 */ t=T;            SET(1, 1) PUT1x2(DEI(t + 1), DEI(t)) break;
102 102
 			case 0x17: /* DEO  */ t=T;n=N;        SET(2,-2) DEO(t, n) break;