diff modules/x86.tp @ 195:7856f0916549

Add save il instruction to save callee saved registers in function prolog
author Mike Pavone <pavone@retrodev.com>
date Mon, 26 Aug 2013 21:04:44 -0700
parents 30bed95cbb18
children 3606a7cb3999
line wrap: on
line diff
--- a/modules/x86.tp	Mon Aug 26 20:42:20 2013 -0700
+++ b/modules/x86.tp	Mon Aug 26 21:04:44 2013 -0700
@@ -518,7 +518,7 @@
 					regs <- reglists get: curlist
 					len <- regs length
 					while: { found < 0 && cur < len } do: {
-						bit <- lshift: 1 by: cur
+						bit <- lshift: 1 by: ((regs get: cur) num)
 						if: (_used and bit) = 0 {
 							found <- cur
 							foundlist <- regs
@@ -586,7 +586,8 @@
 				needSaveProlog <- {
 					retval <- #[]
 					foreach: _calleesave :idx reg {
-						if: (_usedAllTime and (lshift: 1 by: (reg num))) != 0 {
+						bit <- lshift: 1 by: (reg num)
+						if: (_usedAllTime and bit) != 0 {
 							retval append: reg
 						}
 					}