diff lwasm/insn_gen.c @ 283:210d261a614d

Make byte overflow detection for indexing work better There are *two* places where indexed addressing is calculated - lea style instructions and general addressing instructions. Actually check for byte overflows in both places. Also, extend byte overflow checking to all 8 bit offsets from index registers, not just PCR.
author William Astle <lost@l-w.ca>
date Mon, 02 Sep 2013 10:49:57 -0600
parents 67acad9db5b3
children 3afb809c7add
line wrap: on
line diff
--- a/lwasm/insn_gen.c	Sat Aug 31 11:46:00 2013 -0600
+++ b/lwasm/insn_gen.c	Mon Sep 02 10:49:57 2013 -0600
@@ -270,7 +270,16 @@
 	{
 		lwasm_emit(l, l -> pb);
 		if (l -> lint > 0)
+		{
+			int i;
+			i = lw_expr_intval(e);
+			if (l -> lint == 1)
+			{
+				if (i < -128 || i > 127)
+					lwasm_register_error(as, l, "Byte overflow");
+			}
 			lwasm_emitexpr(l, e, l -> lint);
+		}
 		return;
 	}