Энциклопедия Turbo Pascal. Главы 1-4
Страница 53. Когда следует применять ассемблер


Когда следует применять ассемблер

     Большинство программистов  используют  ассемблер  только при
крайней необходимости,  поскольку программировать  на  ассемблере
достаточно сложно. Общее правило заключается в том, что вообще не
следует использовать ассемблер - он создает слишком  много  проб-
лем. Однако можно указать два случая практического применения ас-
семблера. Первый возникает когда нет другого пути решения задачи.
Например,  когда  требуется  обеспечить  непосредственную связь с
оборудованием,  управление которым не предусмотрено в языке Турбо
Паскаль.
     Во-вторых, такая ситуация возникает при необходимости умень-
шения  времени  выполнения программ и все возможности оптимизации
кода Турбо Паскаля исчерпаны.  В данном случае необходимо  делать
тщательный  выбор функций для их кодирования на ассемблере.  Если
выбор будет сделан неправильно,  то эффект будет  незначительный.
При правильном выборе эффект может быть очень большим.  Для того,
чтобы определить какие подпрограммы требуют перекодировки,  необ-
ходимо определить операционную блок-схему вашей программы. Обычно
для реализации на ассемблере выбираются подпрограммы, которые ис-
пользуются  внутри  циклов,  поскольку они выполняются много раз.
Кодирование на ассемблере процедуры или функции, которые выполня-
ются один или два раза,  может не дать заметного эффекта, а коди-
рование на ассемблере функции, которая выполняется много раз, мо-
жет дать такой эффект.  Например, рассмотрим следующую процедуру:
     procedure ABC;
     var
       t: integer;

     begin
       init;
       for t:=0 to 1000 do begin
         phase1;
         phase2;
         if t=10 then phase3;
       end;
       byebye;
     end;
     Перекодировка процедур "init" и "byebye" может  не  повлиять
заметно на скорость выполнения программы,  поскольку они выполня-
ются только один раз.  Процедуры "phase1" и "phase2"  выполняются
1000 раз и их перекодировка несомненно даст заметный эффект. Нес-
мотря на то, что процедура "phase3" расположена внутри цикла, она
выполняется  лишь один раз и поэтому ее перекодировка не даст эф-
фекта.
     При тщательном выборе процедур для их кодировки на ассембле-
ре можно добиться улучшения быстродействия программы за счет  пе-
рекодировки лишь небольшого числа подпрограмм.

 
« Предыдущая статья