commit 78b6c121ea9a9e9106c677168677d4d1388adb03
parent 2f650974cc8ca7a4796d54513fd0ab2a5c870d2e
Author: bsandro <[email protected]>
Date: Tue, 11 Jan 2022 00:27:31 +0200
mem bugfixes
Diffstat:
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/main.c b/main.c
@@ -8,7 +8,7 @@
#include <unistd.h>
#include <sys/stat.h>
-#define FILENAME "sandmark.umz"
+#define FILENAME "codex.umz"
#define PLATTER_SIZE 4
struct array_t {
@@ -64,7 +64,7 @@ int main(void)
struct stat fileinfo;
size_t read_platters = 0;
- memset(state, 0, sizeof(struct arena_t));
+ memset(state, 0, sizeof(struct state_t));
assert(f != NULL);
stat(FILENAME, &fileinfo);
@@ -89,11 +89,11 @@ int main(void)
instruction.reg_b = (platter & 56) >> 3; // mask 000 111 000 = 56
instruction.reg_c = platter & 7; // mask 000 000 111 = 7
}
- printf("[%2d][%8x]", state->finger, platter);
- print_instruction(instruction);
+ //printf("[%2d][%8x]\n", state->finger, platter);
+ //print_instruction(instruction);
state->finger++;
- //exec_instruction(state, instruction);
- sleep(1);
+ exec_instruction(state, instruction);
+ //sleep(1);
}
//getchar(); // in case SIOUX starts closing the window after exec again
@@ -125,7 +125,7 @@ void exec_instruction(struct state_t *state, struct instruction_t in) {
state->registers[in.reg_a] = state->arena.arrays[state->registers[in.reg_b]].data[state->registers[in.reg_c]];
break;
case ARRA:
- state->arena.arrays[in.reg_a].data[state->registers[in.reg_b]] = state->registers[in.reg_c];
+ state->arena.arrays[state->registers[in.reg_a]].data[state->registers[in.reg_b]] = state->registers[in.reg_c];
break;
case ADD:
state->registers[in.reg_a] = state->registers[in.reg_b] + state->registers[in.reg_c]; //@todo: modulo 2^32 ?
@@ -176,7 +176,6 @@ void exec_instruction(struct state_t *state, struct instruction_t in) {
uint32_t array_new(struct arena_t *arena, uint32_t size) {
uint32_t array_index = arena->size++;
assert(arena != NULL);
- assert(size != 0);
arena->arrays = (struct array_t *)realloc(arena->arrays, arena->size * sizeof(struct array_t));
arena->arrays[array_index].data = (uint32_t *)calloc(size, PLATTER_SIZE);
arena->arrays[array_index].size = size;