Иногда управляющие таблицы вполне эффективно применяются в самых неожиданных ситуациях. Например, необходимо составить подпрограмму, которая будет рассчитывать число ненулевых разрядов в байте. Можно составить цикл со сдвигами и действительно сосчитать ненулевые разряды. Однако намного быстрее будет применить таблицу, позиции в которой будут соответствовать значениям байта – от 0 до 255, а значения в данных позициях – числу ненулевых разрядов для каждого из подобных значений байта.
При этом для повышения быстродействия можно оформить данную подпрограмму как макроопределение и встраивать в программу везде, где необходимо. Для байтовых таблиц можно также повысить производительность с помощью замещения команды MOV на специальные команды XLAT. При этом можно будет обрабатывать не только байтовые таблицы.
49. Оптимизация для конкретных моделей процессоров
Если некоторая программа будет работать на компьютерах со строго определенными моделями процессоров, можно попытаться применить ориентированные на определенные модели процессоров команды.
Многие из новых команд дают возможность повысить производительность программы.
1. Линейные и циклические сдвиги с аргументом, не равным единице.
2. Команда PUSH с непосредственным операндом.
3. Команды ввода и вывода символьных строк.
4. Команды обмена со стеком тем, что содержится во всех регистрах PUSHA и POPA.
5. Команды ENTER и LEAVE для выделения и освобождения кадра стека.
6. Команды контроля соблюдения границ массива BOUND.
7. Команды умножения числа на непосредственный операнд.
Можно увеличить производительность на несколько процентов за счет малого объема памяти.
При составлении программ для процессоров 80386 и 80486 и их разновидностей можно повысить производительность 16-разрядной программы, используя все вышеупомянутые команды для процессоров 80188, 80188 и 80286 и при этом выравнивая данные и адреса передачи управления по границам 32-разрядных слов, применить следующие дополнительные особенности.
1. 32-разрядные регистры (но применять их следует с осторожностью, так как их содержимое не сохраняется, если работают некоторые эмуляторы системы DOS, например модуль совместимости с DOS системы OS/2 версий до 1.3).
2. Команды пересылки с распространением нуля или знакового бита (MOVZX или MOVSX).
3. 64-разрядные сдвиги (в сдвоенных регистрах) – команды SHLD и SHRD.
4. Установка в байте параметров «истина» или «ложь» по содержимому флажков центрального процессора, что дает возможность избавиться от команд условного перехода (SETZ, SETC и т. д.).
5. Команды проверки, установки, сброса, инвертирования и просмотра битов (BT, BTC, BTR, BTS, BSF
и BSR).
6. Обобщенная индексная адресация и режимы адресации с масштабированием индексов.
7. Быстрое умножение с помощью команды LEA с применением масштабированной индексной адресации.
8. «Дальние» условных переходов.
9. Перемножение 32-разрядных чисел и деление 64-разрядных чисел на 32-разрядные.
10. Дополнительные сегментные регистры (FS и GS).
11. Команды загрузки сегментных регистров SS,
FS и GS (LSS, LFS и LGS).
50. Органы управления (controls) Active X
Орган управления является небольшой программой, которой броузер выделяет на странице некоторый участок прямоугольной формы. Внутри своего участка орган управления несет ответственность за перерисовку экрана и взаимодействие с пользователем. К примеру, орган управления способен реализовать что-нибудь вроде движка прокрутки или выпадающего меню, которых сам HTML построить не может; другие модули способны принимать от пользователя, обрабатывать и выводить данные, создавая динамически меняющиеся диаграммы или даже ведя некоторую электронную таблицу прямо в окне броузера; наконец, органы управления еще одного типа выполняют чисто оформительские функции – например, покрывают выделенный им участок узором, плавным переходом цветов, перемещающимся текстом или изображением.
В отличие от модулей Netscape Navigator органы управления ActiveX обладают более узкой и дробной специализацией, меньшими размерами передаваемых по сети файлов, а также полностью автоматизированной установкой. Наткнувшись в HTML на ссылку на определенный орган управления, броузер проверяет, нет ли его на компьютере пользователя (т. е. не применялся ли он раньше). Если орган управления был найден, броузер его запускает, передает необходимые для работы данные и тем самым избавляется от лишнего выхода в сеть. При отсутствии в компьютере этого компонента броузер обращается к серверу, адрес которого указан в HTML-документе и, взяв с него файл, устанавливает и регистрирует новый орган управления в Windows. В результате органом управления может пользоваться не только броузер, но и каждое приложение, которое может работать с так называемыми «нестандартными органами управления OLE» («OLE Custom Controls», OCX).
Читать дальше
Конец ознакомительного отрывка
Купить книгу