small bugfixes,
This commit is contained in:
parent
3ee4442b3d
commit
7fdd4b66b0
|
|
@ -18,8 +18,8 @@ bool init_vm() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 syscall(u32 id, u32 size, u32 mem_ptr) {
|
u32 syscall(u32 id, u32 device, u32 mem_ptr) {
|
||||||
USED(size);
|
USED(device);
|
||||||
switch(id) {
|
switch(id) {
|
||||||
case SYSCALL_CONSOLE_WRITE: {
|
case SYSCALL_CONSOLE_WRITE: {
|
||||||
u32 size = *(u32*)&mem[mem_ptr];
|
u32 size = *(u32*)&mem[mem_ptr];
|
||||||
|
|
@ -30,6 +30,7 @@ u32 syscall(u32 id, u32 size, u32 mem_ptr) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case SYSCALL_CONSOLE_READ: {
|
case SYSCALL_CONSOLE_READ: {
|
||||||
|
u32 size;
|
||||||
u8 *ptr = &mem[mp];
|
u8 *ptr = &mem[mp];
|
||||||
mcpy(ptr, &size, sizeof(u32));
|
mcpy(ptr, &size, sizeof(u32));
|
||||||
ptr += 4;
|
ptr += 4;
|
||||||
|
|
|
||||||
4
vm/vm.c
4
vm/vm.c
|
|
@ -608,7 +608,7 @@ bool step_vm() {
|
||||||
|
|
||||||
u32 i = 0, j = 0;
|
u32 i = 0, j = 0;
|
||||||
i32 q = (i32)locals[src1];
|
i32 q = (i32)locals[src1];
|
||||||
char buffer[MAX_LEN_INT32];
|
char buffer[12];
|
||||||
u32 int_part, frac_part;
|
u32 int_part, frac_part;
|
||||||
|
|
||||||
if (q < 0) {
|
if (q < 0) {
|
||||||
|
|
@ -641,7 +641,7 @@ bool step_vm() {
|
||||||
frac_part &= 0xFFFF;
|
frac_part &= 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
locals[dest] = str_alloc(buffer + i, MAX_LEN_INT32 - i);
|
locals[dest] = str_alloc(buffer + i, 12 - i);
|
||||||
|
|
||||||
return pc;
|
return pc;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
vm/vm.h
2
vm/vm.h
|
|
@ -32,7 +32,7 @@ typedef enum {
|
||||||
OP_HALT, /* halt : A : all zeros : halt execution */
|
OP_HALT, /* halt : A : all zeros : halt execution */
|
||||||
OP_CALL, /* call : A : dest args return : creates a new frame */
|
OP_CALL, /* call : A : dest args return : creates a new frame */
|
||||||
OP_RETURN, /* return : B : dest return_flags : returns from a frame to the parent frame */
|
OP_RETURN, /* return : B : dest return_flags : returns from a frame to the parent frame */
|
||||||
OP_SYSCALL, /* syscall : A : id args mem_ptr : does a system call based on id with args */
|
OP_SYSCALL, /* syscall : A : id device mem_ptr : does a system call based on id with args */
|
||||||
OP_LOAD_IMM, /* load_immediate : B : locals[dest] = const as u16 */
|
OP_LOAD_IMM, /* load_immediate : B : locals[dest] = const as u16 */
|
||||||
OP_LOAD_UPPER_IMM, /* load_upper_immediate : B : locals[dest] = const as u32 << 16 | u16 */
|
OP_LOAD_UPPER_IMM, /* load_upper_immediate : B : locals[dest] = const as u32 << 16 | u16 */
|
||||||
OP_LOAD_IND_8, /* load_indirect_8 : A : locals[dest] = memory[locals[src1]] as u8 */
|
OP_LOAD_IND_8, /* load_indirect_8 : A : locals[dest] = memory[locals[src1]] as u8 */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue