From 727081f99a5065787dd3d035f92ef9f502f3622c Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Wed, 1 Nov 2023 14:23:48 +0000 Subject: Removed OP_EQ signed versions as they're useless A negative number under 2s complement can never be equal to its positive as the top bit *must* be on. If two numbers are equivalent bit-by-bit then they are equal for both signed and unsigned numbers. --- vm/runtime.c | 2 +- vm/runtime.h | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'vm') diff --git a/vm/runtime.c b/vm/runtime.c index b29fcdc..998bdc3 100644 --- a/vm/runtime.c +++ b/vm/runtime.c @@ -55,7 +55,7 @@ const char *err_as_cstr(err_t err) err_t vm_execute(vm_t *vm) { - static_assert(NUMBER_OF_OPCODES == 73, "vm_execute: Out of date"); + static_assert(NUMBER_OF_OPCODES == 70, "vm_execute: Out of date"); struct Program *prog = &vm->program; if (prog->ptr >= prog->max) return ERR_END_OF_PROGRAM; diff --git a/vm/runtime.h b/vm/runtime.h index 2986bda..be907b3 100644 --- a/vm/runtime.h +++ b/vm/runtime.h @@ -181,9 +181,8 @@ static const stack_f STACK_ROUTINES[] = { [OP_XOR_BYTE] = vm_xor_byte, [OP_XOR_HWORD] = vm_xor_hword, [OP_XOR_WORD] = vm_xor_word, - [OP_EQ_BYTE] = vm_eq_byte, [OP_EQ_CHAR] = vm_eq_char, - [OP_EQ_INT] = vm_eq_int, [OP_EQ_HWORD] = vm_eq_hword, - [OP_EQ_LONG] = vm_eq_long, [OP_EQ_WORD] = vm_eq_word, + [OP_EQ_BYTE] = vm_eq_byte, [OP_EQ_HWORD] = vm_eq_hword, + [OP_EQ_WORD] = vm_eq_word, [OP_LT_BYTE] = vm_lt_byte, [OP_LT_CHAR] = vm_lt_char, [OP_LT_INT] = vm_lt_int, [OP_LT_HWORD] = vm_lt_hword, -- cgit v1.2.3-13-gbd6f