memory before/after, instruction count

This commit is contained in:
Folkert van Heusden 2025-04-09 07:00:17 +02:00
parent e1300a8c43
commit 6ae4b9b641
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1

View file

@ -37,14 +37,23 @@ for test in j:
for kv in before['memory']: for kv in before['memory']:
for k in kv: for k in kv:
a = int(k, 8) a = int(k, 8)
p.physRW(a, value=int(kv[k])) clean_a = a & (~1)
v_work = p.physRW(clean_a)
if a & 1:
v_work = (v_work & 0xff00) | int(kv[k])
else:
v_work = (v_work & 0x00ff) | (int(kv[k]) << 8)
p.physRW(clean_a, value=v_work)
for reg in range(6): for reg in range(6):
p.r[reg] = int(before[f'reg-{reg}.0']) p.r[reg] = int(before[f'reg-{reg}.0'])
p.r_alt[reg] = int(before[f'reg-{reg}.1']) p.r_alt[reg] = int(before[f'reg-{reg}.1'])
do_n_instructions = int(before['run-n-instructions'])
# do # do
p.run(pc=pc, breakpoint=return_true) for count in range(do_n_instructions):
p.run(pc=pc, breakpoint=return_true)
p._syncregs() p._syncregs()
# verify # verify
@ -57,7 +66,11 @@ for test in j:
for kv in after['memory']: for kv in after['memory']:
for k in kv: for k in kv:
a = int(k, 8) a = int(k, 8)
v = p.physRW(a) v = p.physRW(a & (~1))
if a & 1:
v &= 0xff
else:
v >>= 8
now_errors += compare(v, int(kv[k]), f'memory {a:06o}', id_) now_errors += compare(v, int(kv[k]), f'memory {a:06o}', id_)
for reg in range(6): for reg in range(6):