Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Скорость в попугаях

Запуск древней программы на Паскале окончился «делением на ноль». Все божились, что эту программу никто не трогал и не перетранслировал уже лет десять. Да и дата EXE-файла это подтверждала. Какое там ещё может быть деление на ноль?

            Пришлось вооружиться древним же отладчиком и проанализировать действия программы. Выяснилось две вещи.

  • Первое. Никакого деления на ноль не было и нет. Срабатывает совсем другое исключение: «непредставимое частное», т.е. при делении значения в паре регистров DX:AX на значение в CX получающееся частное не помещается в 16 разрядов. Совершенно непонятно, почему разработчики x86 не ввели другой номер исключений для такой ситуации, а совместили его с «настоящим» делением на ноль. Это просто вводит в заблуждение, как в данном случае.
  • Второе. Делением определялась скорость компьютера в самом начале (в прологе) программы, ещё до начала выполнения собственно операторов программы. Т.е. программа была вообще не причем. Виновата системная библиотека. А скорость определялась экзотическим способом. В период времени между системными «тиками » (не путать с тактами процессора), выполнялась эталонная последовательность команд и подсчитывалось число раз, которая эта последовательность успела выполниться. Затем полученное число раз делилось на число раз, показанное первой IBM-PC/XT. Таким образом, скорость считалась «в персоналках», т.е. практически действительно «в попугаях».
            А закон Мура все эти годы продолжал действовать. И каждые два года скорость персоналок удваивалась. И, наконец, программу, содержащую определение никому не нужной скорости «в XT» запустили всего лишь на ноутбуке ThinkPad A31p. Но его скорость уже превысила скорость XT более чем в 65535 раз, и совершенно бесполезное определение скорости не позволило выполнить старую программу. Пришлось «выкусывать» прямо в EXE-файле это глупое деление.

            Кстати, из любопытства я на "калькуляторе" разделил два эти числа и получил ускорение относительно XT в 118351 раз. Т.е. для обычных, доступных всем компьютеров, такое ускорение было достигнуто примерно с 1981 по 2002 год. Неплохо.

            А скорость «в попугаях» лучше все-таки не мерить.

Автор: Д.Ю.Караваев.

Опубликовано: 2018.08.26, последняя правка: 2019.01.28    20:46

ОценитеОценки посетителей
   ██████████████████████████████████████████ 3 (100%)
   ▌ 0
   ▌ 0
   ▌ 0

Добавить свой отзыв

Написать автору можно на электронную почту
mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Содержание

Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

●  О превращении кибернетики в шаманство

●  Про лебедей, раков и щук

●  О русском ассемблере

●  Арифметика синтаксиса-3

●  Концепция владения в Rust на примерах

●●  Концепция владения в Rust на примерах, часть 2

●●  Концепция владения в Rust на примерах, часть 3

●  Суть побочных эффектов в чисто функциональных языках

●  О неулучшаемой архитектуре процессоров

●  Двадцать тысяч строк кода, которые потрясут мир?

●  Почему владение/заимствование в Rust такое сложное?

●  Масштабируемые архитектуры программ

●  О создании языков

●●  Джоэл Спольски о функциональном программировании

●  Почему Хаскелл так мало используется в отрасли?

●  Программирование исчезнет. Будет дрессировка нейронных сетей

●  О глупости «программирования на естественном языке»

●  Десятка худших фич C#

●  Бесплатный софт в мышеловке

●  Исповедь правового нигилиста

●  ЕС ЭВМ — это измена, трусость и обман?

●  Русской операционной системой должна стать ReactOS

●  Почему обречён язык Форт

●  Программирование без программистов — это медицина без врачей

●  Электроника без электронщиков

●  Программисты-профессионалы и программирующие инженеры

●  Статьи Дмитрия Караваева

●●  Идеальный транслятор

●●  В защиту PL/1

●●  К вопросу о совершенствовании языка программирования

●●  Опыт самостоятельного развития средства программирования в РКК «Энергия»

●●  О реализации метода оптимизации при компиляции

●●  О реализации метода распределения регистров при компиляции

●●  О распределении памяти при выполнении теста Кнута

●●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●●  О размещении переменных в стеке

●●  Сколько проходов должно быть у транслятора?

●●  Чтение лексем

●●  Экстракоды при синтезе программ

●●  Об исключенных командах или за что «списали» инструкцию INTO?

●●  Типы в инженерных задачах

●●  Непрерывное компилирование

●●  Об одной реализации специализированных операторов ввода-вывода

●●  Особенности реализации структурной обработки исключений в Win64

●●  О русском языке в программировании

●●  Формула расчета точности для умножения

●●  Права доступа к переменным

●●  Заметки о выходе из функции без значения и зеркальности get и put

●●  Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

●●  Ошибка при отсутствии выполняемых действий

●●  О PL/1 и почему в нём не зарезервированы ключевые слова

●●  Не поминайте всуе PL/1

●●  Скорость в попугаях

●●  Крах операции «Инкогнито»

●●  Предопределённый результат

●●  Поддержка профилирования кода программы на низком уровне

●●  К вопросу о парадигмах

●  Следующие 7000 языков программирования

●●  Что нового с 1966 года?

●●  Наблюдаемая эволюция языка программирования

●●  Ряд важных языков в 2017 году

●●  Слоны в комнате

●●  Следующие 7000 языков программирования: заключение

Компьютерный юмор

Новости и прочее




Последние отзывы

2024/03/19 02:19 ••• Ivan
Энтузиасты-разработчики компиляторов и их проекты

2024/03/18 23:25 ••• Автор сайта
Надёжные программы из ненадёжных компонентов

2024/03/18 22:44 ••• Автор сайта
О многократном резервировании функций

2024/03/17 17:18 ••• Городняя Лидия Васильевна
Раскрутка компилятора

2024/03/10 18:33 ••• Бурановский дедушка
Русской операционной системой должна стать ReactOS

2024/03/07 14:16 ••• Неслучайный читатель
«Двухмерный» синтаксис Python

2024/03/03 16:49 ••• Автор сайта
О неправомерном доступе к памяти через указатели

2024/02/28 18:59 ••• Вежливый Лис
Про лебедей, раков и щук

2024/02/24 18:10 ••• Бурановский дедушка
ЕС ЭВМ — это измена, трусость и обман?

2024/02/22 15:57 ••• Автор сайта
Русский язык и программирование

2024/02/19 17:58 ••• Сорок Сороков
О русском языке в программировании

2024/02/16 16:33 ••• Клихальт
Избранные компьютерные анекдоты

2024/02/10 22:40 ••• Автор сайта
Все языки эквивалентны. Но некоторые из них эквивалентнее других