Mercurial > repos > blastem
comparison 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 |
comparison
equal
deleted
inserted
replaced
607:f838bc0aeb7c | 608:097c172839d4 |
---|---|
176 if (address & 0xFFFFFF) < 0xE00000: | 176 if (address & 0xFFFFFF) < 0xE00000: |
177 if (address & 0xFFFFFF) < 128: | 177 if (address & 0xFFFFFF) < 128: |
178 self.disp -= (address & 0xFFFFFF) | 178 self.disp -= (address & 0xFFFFFF) |
179 else: | 179 else: |
180 self.disp += 0xE00000-(address & 0xFFFFFF) | 180 self.disp += 0xE00000-(address & 0xFFFFFF) |
181 if self.disp > 127: | |
182 self.disp = 127 | |
183 elif self.disp < -128: | |
184 self.disp = -128 | |
181 address = base + index + self.disp | 185 address = base + index + self.disp |
182 elif (address & 0xFFFFFF) > 0xFFFFFC: | 186 elif (address & 0xFFFFFF) > 0xFFFFFC: |
183 self.disp -= (address & 0xFFFFFF) - 0xFFFFFC | 187 self.disp -= (address & 0xFFFFFF) - 0xFFFFFC |
188 if self.disp > 127: | |
189 self.disp = 127 | |
190 elif self.disp < -128: | |
191 self.disp = -128 | |
184 address = base + index + self.disp | 192 address = base + index + self.disp |
185 if size != 'b' and address & 1: | 193 if size != 'b' and address & 1: |
186 self.disp = self.disp ^ 1 | 194 self.disp = self.disp ^ 1 |
187 address = base + index + self.disp | 195 address = base + index + self.disp |
188 minv,maxv = get_size_range(size) | 196 minv,maxv = get_size_range(size) |