оптимизирующий компилятор

(mak)

optimizer

Одной из главных особенностей Форта является то, что он может предоставлять пользователю управлять процессом компиляции. При создании новых средств управления компиляции программист должен понимать устройство Форта, которое обязано быть простым. В связи с этим, при создании оптимизирующего компилятора для Форта компилятор и оптимизтор необходимо развязать между собой. Компилятор ничего не знает об оптимизаторе. Оптимизация в SPF4 заключается в том, что происходит подмена скомпилированного кода командой OPT-RULES. OPT-RULES содержит набор правил оптимизации, представленных в виде программы. Каждое правило состоит из 2-х частей: идентификации кода и процедуры подмены. Доступ к коду осуществляется посредством массива ссылок на последние операторы OP0. Использование OP0 позволяет отделить коды команд от их операндов.

  Пример:
  Правило замены фрагмента кода:

   NEG     EAX            \ F7 D8
   ADD     EAX , 0 [EBP]  \ 03 45 00
   NEG     EAX            \ F7 D8

на:

   SUB     EAX , 0 [EBP]  \  2B 45 00
  Представляет собой:

\ $ - -

   OP2 @  @  4503D8F7 XOR           \  NEG EAX  ADD EAX, X [EBP]
   OP0 @  W@ D8F7     XOR    OR 0=  \ NEG EAX
     IF  M\ 20 DTST
         OP1 @ @ 452B OR OP2 @ ! \  SUB EAX, X [EBP]
         OP2 ToOP0
         -4 ALLOT
         FALSE M\ 21 DTST
         EXIT
     THEN

  Для наблюдения работы оптимизтора производятся следующие

действия:

  • Файле src\tc_spf.F , M\ определяется:
 : M\ ( POSTPONE \) ; IMMEDIATE
  • Компилируем новую версию системы запуском compile.bat .
  • В новой версии запускаем mak\OptTr.f
  • ' DoDTST TO DTST \ включение режима наблюдения работы оптимизтора

http://www.mpeltd.demon.co.uk/arena/benchmrk.fth

Valid XHTML 1.0! Valid CSS!
Page Execution took real: 1.068 seconds