Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
17
Добавлен:
20.06.2014
Размер:
523.26 Кб
Скачать

Алгоритм вычисления выражений в полной записи

  1. Если в записи встречается операнд, он помещается в стек.

  2. Если встречается унарная операция, операнд снимается с вершины стека, подвергается операции, а результат снова помещается на стек.

  3. Если встречается бинарная операция, два операнда снимаются со стека, подвергаются операции и результат снова помещается на стек.

B, C, *, D, +, B, 10, *, –

польская запись B * C + D – B * 10

push B

push C

mul

push D

add

push B

push 10

mul

sub

Достоинства: компактная запись машинного кода, широкое использование одноадресных и безадресных операций, что может упрощать архитектуру аппаратуры и приводить к достижению высокого быстродействия, особенно если стек не в операционной памяти, а в регистровом пуле с достаточным объемом. Такой подход удобен для построения разного рода эмуляторов вычислительных архитектур.

Еще одним из достоинств является эффект использования кэш – памяти, т.к. с большой вероятностью гарантируется попадание в кэш при обращении ко стеку.

Оптимизация циклов

Стандартная форма организации цикла предполагает исполнение команд условного или безусловного перехода. Такие команды могут приводить к сбросу КЭШа процессора, что значит снижение быстродействия. В то же время циклы – наиболее критичные участки с точки зрения производительности. Развертывание циклов является одной из наиболее распространенных мер оптимизации, однако это увеличивает размер кода и не всегда может быть проделано.

Также применяют внесение инвариантных форм вычисления, которые не зависят от размера счетчика цикла.

Использование правил, основанных на алгебраических преобразованиях итеративных форм

Широко применяется выражение сумм арифметических и геометрических прогрессий.

Пример.

int a, b; mov eax, b

void main (void) mov ecx, a

{ imul eax, 45

for (int i = 0; i<10; i++) add ecx, eax

a += b*; mov a, ecx

}

Оптимизация для параллельного выполнения нескольких операций

Поскольку современные процессоры обладают такими возможностями оптимизации, компиляторы могут переставлять инструкции, добиваясь большой независимости в цепочках причинно – следственной связи, так что независимые участки будут выполняться параллельно.

Современные системы программирования

Всякая современная система программирования является интегрированной средой разработки. Она не является набором редакторов, компиляторов, отладчиков и справочных модулей, а связывает их функцией в рамках единой системы, так что все эти средства могут работать одновременно. (Например, изменение кода во время отладки).

Развитие систем программирование привело к широкому использованию разнообразных видов ресурсов, которые не являются программами, но используются во время их работы (например, изображения, текстовые строки, шаблоны форм и т.д.). Поэтому среда разработки фактически имеет две параллельные ветви обработки: текст программы, описание ресурсов.

Соседние файлы в предмете Системное программное обеспечение