mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-11-26 15:53:01 +00:00
Updated uxn-fast.c
This commit is contained in:
parent
1afe39fba4
commit
3d3569bab7
1 changed files with 62 additions and 76 deletions
138
src/uxn-fast.c
138
src/uxn-fast.c
|
@ -139,22 +139,19 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
#endif
|
||||
}
|
||||
break;
|
||||
case 0x06: /* OVR */
|
||||
__asm__("evaluxn_06_OVR:");
|
||||
case 0x06: /* NIP */
|
||||
__asm__("evaluxn_06_NIP:");
|
||||
{
|
||||
Uint8 a = u->wst.dat[u->wst.ptr - 1], b = u->wst.dat[u->wst.ptr - 2];
|
||||
u->wst.dat[u->wst.ptr] = b;
|
||||
Uint8 a;
|
||||
u->wst.dat[u->wst.ptr - 1];
|
||||
a = u->wst.dat[u->wst.ptr - 2];
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->wst.ptr < 2, 0)) {
|
||||
u->wst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->wst.ptr > 254, 0)) {
|
||||
u->wst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->wst.ptr += 1;
|
||||
u->wst.ptr -= 1;
|
||||
}
|
||||
break;
|
||||
case 0x07: /* ROT */
|
||||
|
@ -594,23 +591,21 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
#endif
|
||||
}
|
||||
break;
|
||||
case 0x26: /* OVR2 */
|
||||
__asm__("evaluxn_26_OVR2:");
|
||||
case 0x26: /* NIP2 */
|
||||
__asm__("evaluxn_26_NIP2:");
|
||||
{
|
||||
Uint8 a = u->wst.dat[u->wst.ptr - 1], b = u->wst.dat[u->wst.ptr - 2], c = u->wst.dat[u->wst.ptr - 3], d = u->wst.dat[u->wst.ptr - 4];
|
||||
u->wst.dat[u->wst.ptr] = d;
|
||||
u->wst.dat[u->wst.ptr + 1] = c;
|
||||
Uint16 a;
|
||||
(u->wst.dat[u->wst.ptr - 1] | (u->wst.dat[u->wst.ptr - 2] << 8));
|
||||
a = (u->wst.dat[u->wst.ptr - 3] | (u->wst.dat[u->wst.ptr - 4] << 8));
|
||||
u->wst.dat[u->wst.ptr - 4] = a >> 8;
|
||||
u->wst.dat[u->wst.ptr - 3] = a & 0xff;
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->wst.ptr < 4, 0)) {
|
||||
u->wst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->wst.ptr > 253, 0)) {
|
||||
u->wst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->wst.ptr += 2;
|
||||
u->wst.ptr -= 2;
|
||||
}
|
||||
break;
|
||||
case 0x27: /* ROT2 */
|
||||
|
@ -1076,22 +1071,19 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
#endif
|
||||
}
|
||||
break;
|
||||
case 0x46: /* OVRr */
|
||||
__asm__("evaluxn_46_OVRr:");
|
||||
case 0x46: /* NIPr */
|
||||
__asm__("evaluxn_46_NIPr:");
|
||||
{
|
||||
Uint8 a = u->rst.dat[u->rst.ptr - 1], b = u->rst.dat[u->rst.ptr - 2];
|
||||
u->rst.dat[u->rst.ptr] = b;
|
||||
Uint8 a;
|
||||
u->rst.dat[u->rst.ptr - 1];
|
||||
a = u->rst.dat[u->rst.ptr - 2];
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->rst.ptr < 2, 0)) {
|
||||
u->rst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->rst.ptr > 254, 0)) {
|
||||
u->rst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->rst.ptr += 1;
|
||||
u->rst.ptr -= 1;
|
||||
}
|
||||
break;
|
||||
case 0x47: /* ROTr */
|
||||
|
@ -1531,23 +1523,21 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
#endif
|
||||
}
|
||||
break;
|
||||
case 0x66: /* OVR2r */
|
||||
__asm__("evaluxn_66_OVR2r:");
|
||||
case 0x66: /* NIP2r */
|
||||
__asm__("evaluxn_66_NIP2r:");
|
||||
{
|
||||
Uint8 a = u->rst.dat[u->rst.ptr - 1], b = u->rst.dat[u->rst.ptr - 2], c = u->rst.dat[u->rst.ptr - 3], d = u->rst.dat[u->rst.ptr - 4];
|
||||
u->rst.dat[u->rst.ptr] = d;
|
||||
u->rst.dat[u->rst.ptr + 1] = c;
|
||||
Uint16 a;
|
||||
(u->rst.dat[u->rst.ptr - 1] | (u->rst.dat[u->rst.ptr - 2] << 8));
|
||||
a = (u->rst.dat[u->rst.ptr - 3] | (u->rst.dat[u->rst.ptr - 4] << 8));
|
||||
u->rst.dat[u->rst.ptr - 4] = a >> 8;
|
||||
u->rst.dat[u->rst.ptr - 3] = a & 0xff;
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->rst.ptr < 4, 0)) {
|
||||
u->rst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->rst.ptr > 253, 0)) {
|
||||
u->rst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->rst.ptr += 2;
|
||||
u->rst.ptr -= 2;
|
||||
}
|
||||
break;
|
||||
case 0x67: /* ROT2r */
|
||||
|
@ -2004,24 +1994,24 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
u->wst.ptr += 2;
|
||||
}
|
||||
break;
|
||||
case 0x86: /* OVRk */
|
||||
__asm__("evaluxn_86_OVRk:");
|
||||
case 0x86: /* NIPk */
|
||||
__asm__("evaluxn_86_NIPk:");
|
||||
{
|
||||
Uint8 a = u->wst.dat[u->wst.ptr - 1], b = u->wst.dat[u->wst.ptr - 2];
|
||||
u->wst.dat[u->wst.ptr] = b;
|
||||
u->wst.dat[u->wst.ptr + 1] = a;
|
||||
u->wst.dat[u->wst.ptr + 2] = b;
|
||||
Uint8 a;
|
||||
u->wst.dat[u->wst.ptr - 1];
|
||||
a = u->wst.dat[u->wst.ptr - 2];
|
||||
u->wst.dat[u->wst.ptr] = a;
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->wst.ptr < 2, 0)) {
|
||||
u->wst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->wst.ptr > 252, 0)) {
|
||||
if(__builtin_expect(u->wst.ptr > 254, 0)) {
|
||||
u->wst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->wst.ptr += 3;
|
||||
u->wst.ptr += 1;
|
||||
}
|
||||
break;
|
||||
case 0x87: /* ROTk */
|
||||
|
@ -2512,27 +2502,25 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
u->wst.ptr += 4;
|
||||
}
|
||||
break;
|
||||
case 0xa6: /* OVR2k */
|
||||
__asm__("evaluxn_a6_OVR2k:");
|
||||
case 0xa6: /* NIP2k */
|
||||
__asm__("evaluxn_a6_NIP2k:");
|
||||
{
|
||||
Uint8 a = u->wst.dat[u->wst.ptr - 1], b = u->wst.dat[u->wst.ptr - 2], c = u->wst.dat[u->wst.ptr - 3], d = u->wst.dat[u->wst.ptr - 4];
|
||||
u->wst.dat[u->wst.ptr] = d;
|
||||
u->wst.dat[u->wst.ptr + 1] = c;
|
||||
u->wst.dat[u->wst.ptr + 2] = b;
|
||||
u->wst.dat[u->wst.ptr + 3] = a;
|
||||
u->wst.dat[u->wst.ptr + 4] = d;
|
||||
u->wst.dat[u->wst.ptr + 5] = c;
|
||||
Uint16 a;
|
||||
(u->wst.dat[u->wst.ptr - 1] | (u->wst.dat[u->wst.ptr - 2] << 8));
|
||||
a = (u->wst.dat[u->wst.ptr - 3] | (u->wst.dat[u->wst.ptr - 4] << 8));
|
||||
u->wst.dat[u->wst.ptr] = a >> 8;
|
||||
u->wst.dat[u->wst.ptr + 1] = a & 0xff;
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->wst.ptr < 4, 0)) {
|
||||
u->wst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->wst.ptr > 249, 0)) {
|
||||
if(__builtin_expect(u->wst.ptr > 253, 0)) {
|
||||
u->wst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->wst.ptr += 6;
|
||||
u->wst.ptr += 2;
|
||||
}
|
||||
break;
|
||||
case 0xa7: /* ROT2k */
|
||||
|
@ -3035,24 +3023,24 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
u->rst.ptr += 2;
|
||||
}
|
||||
break;
|
||||
case 0xc6: /* OVRkr */
|
||||
__asm__("evaluxn_c6_OVRkr:");
|
||||
case 0xc6: /* NIPkr */
|
||||
__asm__("evaluxn_c6_NIPkr:");
|
||||
{
|
||||
Uint8 a = u->rst.dat[u->rst.ptr - 1], b = u->rst.dat[u->rst.ptr - 2];
|
||||
u->rst.dat[u->rst.ptr] = b;
|
||||
u->rst.dat[u->rst.ptr + 1] = a;
|
||||
u->rst.dat[u->rst.ptr + 2] = b;
|
||||
Uint8 a;
|
||||
u->rst.dat[u->rst.ptr - 1];
|
||||
a = u->rst.dat[u->rst.ptr - 2];
|
||||
u->rst.dat[u->rst.ptr] = a;
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->rst.ptr < 2, 0)) {
|
||||
u->rst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->rst.ptr > 252, 0)) {
|
||||
if(__builtin_expect(u->rst.ptr > 254, 0)) {
|
||||
u->rst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->rst.ptr += 3;
|
||||
u->rst.ptr += 1;
|
||||
}
|
||||
break;
|
||||
case 0xc7: /* ROTkr */
|
||||
|
@ -3543,27 +3531,25 @@ uxn_eval(Uxn *u, Uint16 vec)
|
|||
u->rst.ptr += 4;
|
||||
}
|
||||
break;
|
||||
case 0xe6: /* OVR2kr */
|
||||
__asm__("evaluxn_e6_OVR2kr:");
|
||||
case 0xe6: /* NIP2kr */
|
||||
__asm__("evaluxn_e6_NIP2kr:");
|
||||
{
|
||||
Uint8 a = u->rst.dat[u->rst.ptr - 1], b = u->rst.dat[u->rst.ptr - 2], c = u->rst.dat[u->rst.ptr - 3], d = u->rst.dat[u->rst.ptr - 4];
|
||||
u->rst.dat[u->rst.ptr] = d;
|
||||
u->rst.dat[u->rst.ptr + 1] = c;
|
||||
u->rst.dat[u->rst.ptr + 2] = b;
|
||||
u->rst.dat[u->rst.ptr + 3] = a;
|
||||
u->rst.dat[u->rst.ptr + 4] = d;
|
||||
u->rst.dat[u->rst.ptr + 5] = c;
|
||||
Uint16 a;
|
||||
(u->rst.dat[u->rst.ptr - 1] | (u->rst.dat[u->rst.ptr - 2] << 8));
|
||||
a = (u->rst.dat[u->rst.ptr - 3] | (u->rst.dat[u->rst.ptr - 4] << 8));
|
||||
u->rst.dat[u->rst.ptr] = a >> 8;
|
||||
u->rst.dat[u->rst.ptr + 1] = a & 0xff;
|
||||
#ifndef NO_STACK_CHECKS
|
||||
if(__builtin_expect(u->rst.ptr < 4, 0)) {
|
||||
u->rst.error = 1;
|
||||
goto error;
|
||||
}
|
||||
if(__builtin_expect(u->rst.ptr > 249, 0)) {
|
||||
if(__builtin_expect(u->rst.ptr > 253, 0)) {
|
||||
u->rst.error = 2;
|
||||
goto error;
|
||||
}
|
||||
#endif
|
||||
u->rst.ptr += 6;
|
||||
u->rst.ptr += 2;
|
||||
}
|
||||
break;
|
||||
case 0xe7: /* ROT2kr */
|
||||
|
|
Loading…
Reference in a new issue