From 08b931e911f01b5489a9c7b86fe72b173ce93fdf Mon Sep 17 00:00:00 2001 From: julianb0 Date: Sun, 16 Jun 2019 12:21:18 +0200 Subject: [PATCH] stack --- vm/pc/main.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/vm/pc/main.c b/vm/pc/main.c index 2c0dc45..6480b65 100644 --- a/vm/pc/main.c +++ b/vm/pc/main.c @@ -12,17 +12,23 @@ static ushort *fwprog; ushort bget(ctx_t *ctx) { - if (rip % 2) { - _except(ctx, E_ALI, "Misaligned RIP register: 0x%016lX", - rip); + ulong addr = rip + cr1; + + + if (addr % 2) { + _except(ctx, E_ALI, "Misaligned RIP and/or CR1: " + "rip=0x%lX cr1=0x%lX", + rip, cr1); } - if (addr2real(rip) >= ctx->mz) { - _except(ctx, E_ACC, "Executing out of memory: 0x%016lX", - rip); + + if (addr2real(addr) >= ctx->mz) { + _except(ctx, E_ACC, "Executing out of memory: " + "rip=0x%lX cr1=0x%lX", + rip, cr1); } - ushort c = ctx->mp[addr2real(rip)]; + ushort c = ctx->mp[addr2real(addr)]; rip += 2;