diff lwasm/insn_indexed.c @ 45:c42d6dc7df68

Fixed code generation error with indirect indexing using 8 or 16 bit offsets from X,Y,U,S
author lost@l-w.ca
date Mon, 04 Apr 2011 18:17:31 -0600
parents 7317fbe024af
children 35f6d6a5510f
line wrap: on
line diff
--- a/lwasm/insn_indexed.c	Mon Apr 04 18:05:18 2011 -0600
+++ b/lwasm/insn_indexed.c	Mon Apr 04 18:17:31 2011 -0600
@@ -349,7 +349,7 @@
 				case 1:
 				case 2:
 				case 3:
-					pb = 0x89 | ((l -> pb & 0x03) << 5) | (0x10 * (l -> pb & 0x80));
+					pb = 0x89 | ((l -> pb & 0x03) << 5) | ((l -> pb & 0x80) ? 0x10 : 0);
 					break;
 			
 				case 4: // W
@@ -377,7 +377,7 @@
 				case 1:
 				case 2:
 				case 3:
-					pb = 0x88 | ((l -> pb & 0x03) << 5) | (0x10 * (l -> pb & 0x80));
+					pb = 0x88 | ((l -> pb & 0x03) << 5) | ((l -> pb & 0x80) ? 0x10 : 0);
 					break;
 			
 				case 4: // W
@@ -436,7 +436,7 @@
 			case 1:
 			case 2:
 			case 3:
-				pb = 0x89 | (l -> pb & 0x03) << 5 | (0x10 * (l -> pb & 0x80));
+				pb = 0x89 | (l -> pb & 0x03) << 5 | ((l -> pb & 0x80) ? 0x10 : 0);
 				break;
 			
 			case 4: // W
@@ -462,7 +462,7 @@
 			case 1:
 			case 2:
 			case 3:
-				pb = 0x88 | (l -> pb & 0x03) << 5 | (0x10 * (l -> pb & 0x80));
+				pb = 0x88 | (l -> pb & 0x03) << 5 | ((l -> pb & 0x80) ? 0x10 : 0);
 				break;
 			
 			case 4: // W