BD.COM із запущеним вірусом die385. |
Випадково зіткнувся із авторами симпатичного дебаггера епохи 90-х, BD.COM. Є навіть надія, що його джерельні тексти на github потраплять. Та й згадав в процесі тих розмов про магічне число, B800/B8000. Виявляється, про нього зараз пам'ятає менше людей, ніж я очікував. :-)
Колись давно (1976) вирішила Intel на колінці зробити мікропроцесор,
щоб «закрити» ринок, поки розроблять
щось більш достойне. Вийшов він в 1978 і називався 8086. Процесор був 16-бітний, однак міг адресувати цілий мегабайт
пам’яті (на що, як ми знаємо, потрібно 20 біт), за допомогою хитрого трюка –
адресу ділили на дві частини, по 16 біт. Для отримання «справжньої», фізичної
адреси, яку процесор може використати для звертатиметься до пам’яті, першу частину зсували на 4
біти вліво (це те саме, що множити на 16) та додавали другу.
Першу частину, наслідуючи «дорослі» машини, які підтримували сегментацію – можливість ділити пам’ять на ізольовані блоки, сегменти, назвали
сегментом. Ніякого розділення, звичайно, не було – воно «приросло» в 80286
(1982), але слово гарне, все таке. Другу – зміщення (відносно початку сегменту). Тобто, адреса складалася із пари segment:offset. Для адреси
сегменту було виділено спеціальні сегментні регістри, не змінюючи яких, можна
було звертатися до 64Кб, маніпулюючи 16-бітним зміщенням.