changeset 131:f2f3a4b0a25e

Fix fix for forced index offset sizes
author lost@l-w.ca
date Thu, 11 Aug 2011 22:58:27 -0600
parents 50d86baf4ea2
children 4cf44ff89b08
files lwasm/insn_indexed.c
diffstat 1 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lwasm/insn_indexed.c	Thu Aug 11 22:48:16 2011 -0600
+++ b/lwasm/insn_indexed.c	Thu Aug 11 22:58:27 2011 -0600
@@ -236,12 +236,13 @@
 		if (l -> lint == 1)
 		{
 			l -> pb = 0x88 | (rn << 5) | (indir ? 0x10 : 0);
+			return;
 		}
 		else if (l -> lint == 2)
 		{
 			l -> pb = 0x89 | (rn << 5) | (indir ? 0x10 : 0);
+			return;
 		}
-		return;
 	}
 
 	// nnnn,W is only 16 bit (or 0 bit)
@@ -337,7 +338,7 @@
 	
 	if (l -> len != -1)
 		return;
-	
+
 	e = lwasm_fetch_expr(l, 0);
 	if (!lw_expr_istype(e, lw_expr_type_int))
 	{
@@ -438,7 +439,7 @@
 			}
 			else
 			{
-				// we have X,Y,U,S and a possible 16 bit here
+				// we have X,Y,U,S and a possible 5 bit here
 				l -> lint = 0;
 				
 				if (v == 0 && !(CURPRAGMA(l, PRAGMA_NOINDEX0TONONE) || l -> pb & 0x40))
@@ -447,7 +448,7 @@
 				}	
 				else
 				{
-					pb = (l -> pb & 0x03) << 5 | (v & 0x1F);
+					pb = ((l -> pb & 0x03) << 5) | (v & 0x1F);
 				}
 				l -> pb = pb;
 				lw_expr_destroy(e2);
@@ -539,7 +540,7 @@
 		}
 		else
 		{
-			// we have X,Y,U,S and a possible 16 bit here
+			// we have X,Y,U,S and a possible 5 bit here
 			l -> lint = 0;
 			
 			if (v == 0 && !(CURPRAGMA(l, PRAGMA_NOINDEX0TONONE) || l -> pb & 0x40))
@@ -548,7 +549,7 @@
 			}
 			else
 			{
-				pb = (l -> pb & 0x03) << 5 | (v & 0x1F);
+				pb = ((l -> pb & 0x03) << 5) | (v & 0x1F);
 			}
 			l -> pb = pb;
 			return;