Специальная математика. Соловьев А.Е. - 94 стр.

UptoLike

Составители: 

Рубрика: 

выход и сравнение повторяется. Эти процедуры выполняются до тех пор, пока не
исчерпается строка.
Операции Магазинный Сравнительный
(
:=
+ - 1 1
* / 2 2
(степень)
3 3
) -
y:=a*(b+c) e/(d-k)
y сразу проходит на выход…
) / )
yabc yabc + e yabc + e*dk yabc + e*dk-/:=
1 23 2 32
При выполнении используется стек.
Операнды поступают в стек. Поступив на вход стека, оператор вытягивает из стека столько
операндов, сколько ему нужно. Результат заталкивается в вершину стека.
2 2
3 5 25 3 1 25
2 1 1 25 25 y
1 y y y y
y
7.21. Оптимизация программ
Если не принять специальных мер, в результате трансляции получаются программы,
избыточные и по занимаемой памяти, и по вычислениям. Поэтому меры по оптимизации
принимаются в практически используемых трансляторах.
Оптимизация на первых этапах (проходах) трансляции может быть эффективной потому,
что программа в этот период компактна, хорошо обозрима, а главное – мобильна.
“Плюсы” оптимизации на последних этапах (проходах) очевидны именно там
аккумулируются результаты неоптимальных решений на всех предыдущих этапах
трансляции.
Оптимизация на начальных этапах:
1. Предварительное вычисление выражений.
При данных x := 2; y := 3;
оператор z:= x + y + 10
замена на z := 15;
2. Исключение невыполнимых ветвей. То есть тех ветвей, которые соответствуют
невыполнимому сочетанию условий.
3. Выделение общих частей.
— 94 —
+ * - / :=
    выход и сравнение повторяется. Эти                процедуры выполняются до тех пор, пока не
    исчерпается строка.


Операции                 Магазинный             Сравнительный
         (                                           
        :=                                           
       +-                      1                      1
       */                      2                      2
   (степень)                  3                      3
         )                     -                      

y:=a*(b+c) e/(d-k)
y сразу проходит на выход…
         )                /                               )
yabc            yabc + e                   yabc + e*dk         yabc + e*dk-/:=
                                                                 1 23 2 32
При выполнении используется стек.
Операнды поступают в стек. Поступив на вход стека, оператор вытягивает из стека столько
операндов, сколько ему нужно. Результат заталкивается в вершину стека.

    +               *        -        /        :=
        2                 2
3       5       25       3         1       25
2       1        1       25       25       y
1       y       y        y         y
y


                                   7.21. Оптимизация программ

Если не принять специальных мер, в результате трансляции получаются программы,
избыточные и по занимаемой памяти, и по вычислениям. Поэтому меры по оптимизации
принимаются в практически используемых трансляторах.
Оптимизация на первых этапах (проходах) трансляции может быть эффективной потому,
что программа в этот период компактна, хорошо обозрима, а главное – мобильна.
“Плюсы” оптимизации на последних этапах (проходах) очевидны – именно там
аккумулируются результаты неоптимальных решений на всех предыдущих этапах
трансляции.
Оптимизация на начальных этапах:
1. Предварительное вычисление выражений.
   При данных x := 2; y := 3;
   оператор z:= x + y + 10
   замена на z := 15;

2. Исключение невыполнимых ветвей. То есть тех ветвей, которые соответствуют
невыполнимому сочетанию условий.

3. Выделение общих частей.



                                                     — 94 —