diff gentests.py @ 608:097c172839d4

Don't use out of bounds displacements in indexed mode even if our targeted address is out of RAM range
author Michael Pavone <pavone@retrodev.com>
date Sat, 27 Dec 2014 14:50:28 -0800
parents bfbb8613efb4
children 188a60def81f
line wrap: on
line diff
--- a/gentests.py	Fri Dec 26 21:26:25 2014 -0800
+++ b/gentests.py	Sat Dec 27 14:50:28 2014 -0800
@@ -178,9 +178,17 @@
 					self.disp -= (address & 0xFFFFFF)
 				else:
 					self.disp += 0xE00000-(address & 0xFFFFFF)
+				if self.disp > 127:
+					self.disp = 127
+				elif self.disp < -128:
+					self.disp = -128
 				address = base + index + self.disp
 			elif (address & 0xFFFFFF) > 0xFFFFFC:
 				self.disp -= (address & 0xFFFFFF) - 0xFFFFFC
+				if self.disp > 127:
+					self.disp = 127
+				elif self.disp < -128:
+					self.disp = -128
 				address = base + index + self.disp
 			if size != 'b' and address & 1:
 				self.disp = self.disp ^ 1