changeset 198:3606a7cb3999

Fix ireg upper, regSource returnAll and regSource needSaveForCall in x86 module
author Mike Pavone <pavone@retrodev.com>
date Tue, 27 Aug 2013 22:51:57 -0700
parents 1417f13f219c
children 3b13ced3b562
files modules/x86.tp
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/modules/x86.tp	Tue Aug 27 22:50:48 2013 -0700
+++ b/modules/x86.tp	Tue Aug 27 22:51:57 2013 -0700
@@ -11,7 +11,7 @@
 			isInteger? <- { false }
 			register? <- { true }
 			label? <- { false }
-			upper? <- { true }
+			upper? <- { false }
 			needsRex? <- { regnum >= 8u8 }
 			rexBitReg <- {
 				if: needsRex? {
@@ -582,7 +582,7 @@
 				return <- :reg {
 					_used <- _used and (0xF xor (lshift: 1 by: (reg num)))
 				}
-				returnAll <- { _used = 0 }
+				returnAll <- { _used <- 0 }
 				needSaveProlog <- {
 					retval <- #[]
 					foreach: _calleesave :idx reg {
@@ -595,9 +595,12 @@
 				}
 				needSaveForCall <- {
 					retval <- #[]
-					foreach: #[_tempregs _argregs] :_ regs {
+					print: "Used: " . (hex: _used) . "\n"
+					foreach: #[(_tempregs) (_argregs)] :_ regs {
 						foreach: regs :_ reg {
+							print: "Checking bit: " . (hex: (lshift: 1 by: (reg num))) . "\n"
 							if: (_used and (lshift: 1 by: (reg num))) != 0 {
+								print: (string: reg) . " needs saving for call\n"
 								retval append: reg
 							}
 						}