long -> sword, int -> shword, char -> sbyte

This commit is contained in:
2024-06-19 20:19:21 +01:00
parent bdc6e15ae9
commit 213d4afcfd
5 changed files with 77 additions and 77 deletions

View File

@@ -44,11 +44,11 @@ typedef float f32;
typedef double f64;
typedef u8 byte_t;
typedef i8 char_t;
typedef i8 sbyte_t;
typedef u32 hword_t;
typedef i32 int_t;
typedef i32 shword_t;
typedef u64 word_t;
typedef i64 long_t;
typedef i64 sword_t;
/* Macros for the sizes of common base data types. */
#define HWORD_SIZE sizeof(hword_t)
@@ -73,11 +73,11 @@ typedef i64 long_t;
typedef union
{
byte_t as_byte;
char_t as_char;
sbyte_t as_sbyte;
hword_t as_hword;
int_t as_int;
shword_t as_shword;
word_t as_word;
long_t as_long;
sword_t as_sword;
} data_t;
/**

View File

@@ -125,50 +125,50 @@ const char *opcode_as_cstr(opcode_t code)
return "EQ_WORD";
case OP_LT_BYTE:
return "LT_BYTE";
case OP_LT_CHAR:
return "LT_CHAR";
case OP_LT_SBYTE:
return "LT_SBYTE";
case OP_LT_HWORD:
return "LT_HWORD";
case OP_LT_INT:
return "LT_INT";
case OP_LT_LONG:
return "LT_LONG";
case OP_LT_SHWORD:
return "LT_SHWORD";
case OP_LT_SWORD:
return "LT_SWORD";
case OP_LT_WORD:
return "LT_WORD";
case OP_LTE_BYTE:
return "LTE_BYTE";
case OP_LTE_CHAR:
return "LTE_CHAR";
case OP_LTE_SBYTE:
return "LTE_SBYTE";
case OP_LTE_HWORD:
return "LTE_HWORD";
case OP_LTE_INT:
return "LTE_INT";
case OP_LTE_LONG:
return "LTE_LONG";
case OP_LTE_SHWORD:
return "LTE_SHWORD";
case OP_LTE_SWORD:
return "LTE_SWORD";
case OP_LTE_WORD:
return "LTE_WORD";
case OP_GT_BYTE:
return "GT_BYTE";
case OP_GT_CHAR:
return "GT_CHAR";
case OP_GT_SBYTE:
return "GT_SBYTE";
case OP_GT_HWORD:
return "GT_HWORD";
case OP_GT_INT:
return "GT_INT";
case OP_GT_LONG:
return "GT_LONG";
case OP_GT_SHWORD:
return "GT_SHWORD";
case OP_GT_SWORD:
return "GT_SWORD";
case OP_GT_WORD:
return "GT_WORD";
case OP_GTE_BYTE:
return "GTE_BYTE";
case OP_GTE_CHAR:
return "GTE_CHAR";
case OP_GTE_SBYTE:
return "GTE_SBYTE";
case OP_GTE_HWORD:
return "GTE_HWORD";
case OP_GTE_INT:
return "GTE_INT";
case OP_GTE_LONG:
return "GTE_LONG";
case OP_GTE_SHWORD:
return "GTE_SHWORD";
case OP_GTE_SWORD:
return "GTE_SWORD";
case OP_GTE_WORD:
return "GTE_WORD";
case OP_PLUS_BYTE:
@@ -205,16 +205,16 @@ const char *opcode_as_cstr(opcode_t code)
return "CALL_STACK";
case OP_RET:
return "RET";
case OP_PRINT_CHAR:
return "PRINT_CHAR";
case OP_PRINT_SBYTE:
return "PRINT_SBYTE";
case OP_PRINT_BYTE:
return "PRINT_BYTE";
case OP_PRINT_INT:
return "PRINT_INT";
case OP_PRINT_SHWORD:
return "PRINT_SHWORD";
case OP_PRINT_HWORD:
return "PRINT_HWORD";
case OP_PRINT_LONG:
return "PRINT_LONG";
case OP_PRINT_SWORD:
return "PRINT_SWORD";
case OP_PRINT_WORD:
return "PRINT_WORD";
case OP_HALT:

View File

@@ -20,7 +20,7 @@
(((OPCODE) >= OP_TYPE##_BYTE) && ((OPCODE) <= OP_TYPE##_WORD))
#define SIGNED_OPCODE_IS_TYPE(OPCODE, OP_TYPE) \
(((OPCODE) >= OP_TYPE##_BYTE) && ((OPCODE) <= OP_TYPE##_LONG))
(((OPCODE) >= OP_TYPE##_BYTE) && ((OPCODE) <= OP_TYPE##_SWORD))
#define OPCODE_DATA_TYPE(OPCODE, OP_TYPE) (OPCODE - OP_TYPE##_BYTE)
@@ -114,40 +114,40 @@ typedef enum
// Comparison operations
OP_LT_BYTE,
OP_LT_CHAR,
OP_LT_SBYTE,
OP_LT_HWORD,
OP_LT_INT,
OP_LT_SHWORD,
OP_LT_WORD,
OP_LT_LONG,
OP_LT_SWORD,
OP_LTE_BYTE,
OP_LTE_CHAR,
OP_LTE_SBYTE,
OP_LTE_HWORD,
OP_LTE_INT,
OP_LTE_SHWORD,
OP_LTE_WORD,
OP_LTE_LONG,
OP_LTE_SWORD,
OP_GT_BYTE,
OP_GT_CHAR,
OP_GT_SBYTE,
OP_GT_HWORD,
OP_GT_INT,
OP_GT_SHWORD,
OP_GT_WORD,
OP_GT_LONG,
OP_GT_SWORD,
OP_GTE_BYTE,
OP_GTE_CHAR,
OP_GTE_SBYTE,
OP_GTE_HWORD,
OP_GTE_INT,
OP_GTE_SHWORD,
OP_GTE_WORD,
OP_GTE_LONG,
OP_GTE_SWORD,
// Simple I/O
OP_PRINT_BYTE,
OP_PRINT_CHAR,
OP_PRINT_SBYTE,
OP_PRINT_HWORD,
OP_PRINT_INT,
OP_PRINT_SHWORD,
OP_PRINT_WORD,
OP_PRINT_LONG,
OP_PRINT_SWORD,
// Program control flow
OP_JUMP_ABS,

View File

@@ -61,7 +61,7 @@ static_assert(DATA_TYPE_NIL == -1 && DATA_TYPE_WORD == 2,
"Code using OPCODE_DATA_TYPE for quick same type opcode "
"conversion may be out of date.");
static_assert(OP_PRINT_LONG - OP_PRINT_BYTE == 5,
static_assert(OP_PRINT_SWORD - OP_PRINT_BYTE == 5,
"Implementation of OP_PRINT is out of date");
err_t vm_execute(vm_t *vm)

View File

@@ -223,33 +223,33 @@ static const stack_f STACK_ROUTINES[] = {
[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,
[OP_LT_LONG] = vm_lt_long,
[OP_LT_WORD] = vm_lt_word,
[OP_LT_BYTE] = vm_lt_byte,
[OP_LT_SBYTE] = vm_lt_sbyte,
[OP_LT_SHWORD] = vm_lt_shword,
[OP_LT_HWORD] = vm_lt_hword,
[OP_LT_SWORD] = vm_lt_sword,
[OP_LT_WORD] = vm_lt_word,
[OP_LTE_BYTE] = vm_lte_byte,
[OP_LTE_CHAR] = vm_lte_char,
[OP_LTE_INT] = vm_lte_int,
[OP_LTE_HWORD] = vm_lte_hword,
[OP_LTE_LONG] = vm_lte_long,
[OP_LTE_WORD] = vm_lte_word,
[OP_LTE_BYTE] = vm_lte_byte,
[OP_LTE_SBYTE] = vm_lte_sbyte,
[OP_LTE_SHWORD] = vm_lte_shword,
[OP_LTE_HWORD] = vm_lte_hword,
[OP_LTE_SWORD] = vm_lte_sword,
[OP_LTE_WORD] = vm_lte_word,
[OP_GT_BYTE] = vm_gt_byte,
[OP_GT_CHAR] = vm_gt_char,
[OP_GT_INT] = vm_gt_int,
[OP_GT_HWORD] = vm_gt_hword,
[OP_GT_LONG] = vm_gt_long,
[OP_GT_WORD] = vm_gt_word,
[OP_GT_BYTE] = vm_gt_byte,
[OP_GT_SBYTE] = vm_gt_sbyte,
[OP_GT_SHWORD] = vm_gt_shword,
[OP_GT_HWORD] = vm_gt_hword,
[OP_GT_SWORD] = vm_gt_sword,
[OP_GT_WORD] = vm_gt_word,
[OP_GTE_BYTE] = vm_gte_byte,
[OP_GTE_CHAR] = vm_gte_char,
[OP_GTE_INT] = vm_gte_int,
[OP_GTE_HWORD] = vm_gte_hword,
[OP_GTE_LONG] = vm_gte_long,
[OP_GTE_WORD] = vm_gte_word,
[OP_GTE_BYTE] = vm_gte_byte,
[OP_GTE_SBYTE] = vm_gte_sbyte,
[OP_GTE_SHWORD] = vm_gte_shword,
[OP_GTE_HWORD] = vm_gte_hword,
[OP_GTE_SWORD] = vm_gte_sword,
[OP_GTE_WORD] = vm_gte_word,
[OP_PLUS_BYTE] = vm_plus_byte,
[OP_PLUS_HWORD] = vm_plus_hword,