tinyvm/tvm_stack.c
Joseph Kogut 59f356993b * Nothing left can be taken away.
* Added print instruction (PRN)
2011-08-06 16:06:51 -07:00

21 lines
494 B
C

#include <stdlib.h>
#include "tvm_stack.h"
void create_stack(tvm_memory_t* mem, size_t size)
{
mem->registers[0x7].i32_ptr = ((int32_t*)mem->mem_space) + (size / sizeof(int32_t));
mem->registers[0x6].i32_ptr = mem->registers[0x7].i32_ptr;
}
void stack_push(tvm_memory_t* mem, int* item)
{
mem->registers[0x6].i32_ptr -= 1;
*mem->registers[0x6].i32_ptr = *item;
}
void stack_pop(tvm_memory_t* mem, int* dest)
{
*dest = *mem->registers[0x6].i32_ptr;
mem->registers[0x6].i32_ptr += 1;
}