diff options
| author | Mistivia <i@mistivia.com> | 2025-03-25 12:05:20 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-03-25 12:05:20 +0800 |
| commit | dc87ff4b0c9f311be7fad652594e3766a4ddb0c6 (patch) | |
| tree | 8e7d1c9045b8abec12b4682a2bb4d8a5b217139e /src/fvm.c | |
| parent | 4188f791787be19f32226b8ac0f213f61cdd4666 (diff) | |
refactor name
Diffstat (limited to 'src/fvm.c')
| -rw-r--r-- | src/fvm.c | 62 |
1 files changed, 31 insertions, 31 deletions
@@ -7,77 +7,77 @@ int fvm_init(struct fvm *vm, void *code, int64_t stack_size) { void *stack_vm = malloc(stack_size); - vm->sp = (fvm_word_t)(stack_vm + stack_size); + vm->sp = (int64_t)(stack_vm + stack_size); vm->bp = vm->sp; - vm->pc = (fvm_word_t)code; + vm->pc = (int64_t)code; vm->rv = 0; return 1; } -void fvm_push(struct fvm *vm, fvm_word_t val) { - vm->sp -= sizeof(fvm_word_t); +void fvm_push(struct fvm *vm, int64_t val) { + vm->sp -= sizeof(int64_t); fvm_store(vm, vm->sp, val); } int64_t fvm_pop(struct fvm *vm) { int64_t r = fvm_load(vm, vm->sp); - vm->sp += sizeof(fvm_word_t); + vm->sp += sizeof(int64_t); return r; } -void fvm_pushf(struct fvm *vm, fvm_float_t val) { - assert(sizeof(fvm_word_t) >= sizeof(fvm_float_t)); - vm->sp -= sizeof(fvm_word_t); +void fvm_pushf(struct fvm *vm, double val) { + assert(sizeof(int64_t) >= sizeof(double)); + vm->sp -= sizeof(int64_t); fvm_storef(vm, vm->sp, val); } -fvm_float_t fvm_popf(struct fvm *vm) { - assert(sizeof(fvm_word_t) >= sizeof(fvm_float_t)); - fvm_float_t r = fvm_loadf(vm, vm->sp); - vm->sp += sizeof(fvm_word_t); +double fvm_popf(struct fvm *vm) { + assert(sizeof(int64_t) >= sizeof(double)); + double r = fvm_loadf(vm, vm->sp); + vm->sp += sizeof(int64_t); return r; } -fvm_float_t fvm_loadf(struct fvm *vm, fvm_word_t addr) { - return *(fvm_float_t*)addr; +double fvm_loadf(struct fvm *vm, int64_t addr) { + return *(double*)addr; } -void fvm_storef(struct fvm *vm, fvm_word_t addr, fvm_float_t val) { - *(fvm_float_t*)addr = val; +void fvm_storef(struct fvm *vm, int64_t addr, double val) { + *(double*)addr = val; } -fvm_word_t fvm_load(struct fvm *vm, fvm_word_t addr) { - return *(fvm_word_t*)addr; +int64_t fvm_load(struct fvm *vm, int64_t addr) { + return *(int64_t*)addr; } -void fvm_store(struct fvm *vm, fvm_word_t addr, int64_t value) { - *(fvm_word_t*)addr = value; +void fvm_store(struct fvm *vm, int64_t addr, int64_t value) { + *(int64_t*)addr = value; } -int32_t fvm_load32(struct fvm *vm, fvm_word_t addr) { +int32_t fvm_load32(struct fvm *vm, int64_t addr) { return *(int32_t*)addr; } -void fvm_store32(struct fvm *vm, fvm_word_t addr, int32_t value) { +void fvm_store32(struct fvm *vm, int64_t addr, int32_t value) { *(int32_t*)addr = value; } -int16_t fvm_load16(struct fvm *vm, fvm_word_t addr) { +int16_t fvm_load16(struct fvm *vm, int64_t addr) { return *(int16_t*)addr; } -void fvm_store16(struct fvm *vm, fvm_word_t addr, int16_t value) { +void fvm_store16(struct fvm *vm, int64_t addr, int16_t value) { *(int16_t*)addr = value; } -int8_t fvm_load8(struct fvm *vm, fvm_word_t addr) { +int8_t fvm_load8(struct fvm *vm, int64_t addr) { return *(int8_t*)addr; } -void fvm_store8(struct fvm *vm, fvm_word_t addr, int8_t value) { +void fvm_store8(struct fvm *vm, int64_t addr, int8_t value) { *(int8_t*)addr = value; } int64_t fvm_execute(struct fvm *vm) { - fvm_word_t a, b, c; - fvm_float_t x, y, z; + int64_t a, b, c; + double x, y, z; while (1) { enum fvm_op op = (enum fvm_op)(uint8_t)fvm_load8(vm, vm->pc); switch (op) { @@ -113,7 +113,7 @@ int64_t fvm_execute(struct fvm *vm) { break; case FVM_OP_IMM: fvm_push(vm, fvm_load(vm, vm->pc + 1)); - vm->pc += sizeof(fvm_word_t) + 1; + vm->pc += sizeof(int64_t) + 1; break; case FVM_OP_LD: fvm_push(vm, fvm_load(vm, fvm_pop(vm))); @@ -416,12 +416,12 @@ int64_t fvm_execute(struct fvm *vm) { break; case FVM_OP_FTI: x = fvm_popf(vm); - fvm_push(vm, (fvm_word_t)x); + fvm_push(vm, (int64_t)x); vm->pc++; break; case FVM_OP_ITF: a = fvm_pop(vm); - fvm_pushf(vm, (fvm_float_t)x); + fvm_pushf(vm, (double)x); vm->pc++; break; case FVM_OP_EXIT: |
