Один крутой чувак взял процессор 8088 и стал гонять его потактово, на каждом шаге считывая состояние. Для каждой машинной команды нагенерил десять тысяч вёдер вариантов. В сумме получилось 300700 тестов для всей системы команд i86. Каждый тест выглядит так:
Попробовал я эти тесты на моём новом симуляторе PC i86, и тут же наткнулся на ошибки в реализации процессора. Ценнейший инструмент получается. Поглядим, что выйдет от всех трёхсот тысяч тестов. Как говорится, тестов много не бывает.==== Test #0 (671 bytes) ====
Name: "add byte [ss:bp+di-64h], cl"
Initial CPU State:
Registers:
ax = 52A1 (21153)
bx = E724 (59172)
cx = 81C8 (33224)
dx = F0F7 (61687)
cs = 31ED (12781)
ss = 1D03 (7427)
ds = 0258 (600)
es = CCC3 (52419)
sp = BF76 (49014)
bp = 2608 (9736)
si = CB21 (52001)
di = 2729 (10025)
ip = 02B6 (694)
flags = F452 (62546)
RAM entries: 5
32186 = 00 (0)
32187 = 4B (75)
32188 = 9C (156)
32189 = 90 (144)
21CFD = 14 (20)
Final CPU State:
Registers:
ip = 02B9 (697)
flags = F482 (62594)
RAM entries: 1
21CFD = DC (220)
