vak: (Знайка)
[personal profile] vak
Один крутой чувак взял процессор 8088 и стал гонять его потактово, на каждом шаге считывая состояние. Для каждой машинной команды нагенерил десять тысяч вёдер вариантов. В сумме получилось 300700 тестов для всей системы команд 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)
Попробовал я эти тесты на моём новом симуляторе PC i86, и тут же наткнулся на ошибки в реализации процессора. Ценнейший инструмент получается. Поглядим, что выйдет от всех трёхсот тысяч тестов. Как говорится, тестов много не бывает.

Date: 2026-02-04 22:59 (UTC)
madef: (Default)
From: [personal profile] madef
Теоретически можно погонять реальный процессор, какой-нибудь современный Xeon или AMD EPYC, найти в нём ошибку и написать на её основе вирус.

Date: 2026-02-04 23:14 (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Правильность реализации - это ведь соответствие спецификации.

Если программа использует особенность, которая нигде не описана (даже как "официально недокументированная"), то это скорее ошибка программы.

Date: 2026-02-05 12:58 (UTC)
dmarck: (Default)
From: [personal profile] dmarck
есть такой подход: bug-to-bug compatibility

возможно, спорный -- но часто востребованный

Date: 2026-02-04 23:19 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Как отлично! Немножко поздновато, но ничо, ничо. Зато пример достигнутого совершенства.

Date: 2026-02-05 02:20 (UTC)
ufm: (Default)
From: [personal profile] ufm
Хорошо. Но. "These tests are produced with an AMD D8088 (8441DMA) CPU dated 1982"
Никто-ж не обещал что у интела внутренние баги с амд совпадают.