From 60afc143f247bf58fa01cff73516d30511c97c82 Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Sat, 27 Dec 2014 14:50:28 -0800 Subject: Don't use out of bounds displacements in indexed mode even if our targeted address is out of RAM range --- gentests.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'gentests.py') diff --git a/gentests.py b/gentests.py index 000f73e..428d6a0 100755 --- a/gentests.py +++ b/gentests.py @@ -178,9 +178,17 @@ class Indexed(object): 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 -- cgit v1.2.3