← ALB News · curated headline

Сдвиги вместо MUL на 8088: по таблице выигрыш у всех констант, с учётом выборки байтов — по расчёту у 9–21%

Habr · RU · Programming · 11/14/2026, 1:19:03 AM

Совет «на 8088 умножай на константу сдвигами, MUL медленный» опирался на таблицу тактов Intel: MUL с 16-битным регистром стоит 118–133 такта, сдвиг — 2, сложение — 3. По ней цепочка сдвигов обгоняет MUL для всех 65 534 констант. Я посчитал время обеих сторон по опубликованным замерам настоящего 8088 1982 года (SingleStepTests Дэниела Балсома). Для MUL таблица точна до такта: 117 плюс число единиц в AX плюс 1 при нулевом DX во всех регистровых тестах с полной очередью, из пустой — на 3 такта больше. А короткая инструкция, которую процессор должен сперва прочитать по 8-битной шине, стоит 8 тактов вместо 2–3. По сумме замеров отдельных инструкций с учётом этой выборки цепочка быстрее MUL для всех констант ниже порога, который зависит от второго множителя и лежит между 1367 и 4779, выше порога — лишь для части, а среди всех 16-битных констант — для 9–21%. Читать далее

Continue to Habr →

You are being forwarded in 6s — stay on this page