From 6165e2dde32a8f425e54d4f061146b366d5a2e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20B=C3=B6hm?= Date: Sat, 4 Jul 2009 10:49:19 +0200 Subject: adapt emulator for generator changes: - new instructions (push, pop, call, ret) - new pseudo-registers (bp, sp, rv) - new binary format - dynamic register file size - removed obsolete instructions --- src/emu/mem.c | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/emu/mem.c') diff --git a/src/emu/mem.c b/src/emu/mem.c index e102eaf..cdbf2ae 100644 --- a/src/emu/mem.c +++ b/src/emu/mem.c @@ -1,3 +1,37 @@ +#include +#include +#include + +#include "cpu.h" #include "mem.h" -uint8_t MEM[4096]; +uint8_t *MEM; + +void store(size_t addr, uint32_t value) +{ + if (addr & 0x2) + trap(TRP_UNALIGNED); + memcpy(&MEM[addr], &value, 4); +} + +uint32_t load(size_t addr) +{ + uint32_t tmp32; + if (addr & 0x2) + trap(TRP_UNALIGNED); + memcpy(&tmp32, &MEM[addr], 4); + return tmp32; +} + +void push(uint32_t value) +{ + GPR[SP] -= 4; + store(GPR[SP], value); +} + +uint32_t pop(void) +{ + uint32_t tmp32 = load(GPR[SP]); + GPR[SP] += 4; + return tmp32; +} -- cgit v1.2.3