Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по ОС.docx
Скачиваний:
101
Добавлен:
26.03.2015
Размер:
12.87 Mб
Скачать
  1. Регистровый блок процессора. Флажки.

16 разрядные регистры.

регистр AX (accumulator) — умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода);

регистр BX (base) — базовый регистр в вычислениях адреса, часто указывает на начальный адрес (называемый базой) структуры в памяти;

регистр CX (count) — счетчик циклов, определяет количество повторов некоторой операции;

регистр DX (data) — определение адреса ввода/вывода, так же может содержать.

32 разрядные регистры: EAX, ECX, EDX, EBX (EXTENDED AX) – Расширенные AX,BX,CX,DX

RAX,RCX,RDX,RBX – 64 разрядные расширенные AX BX CX DX.

Регистры флагов - содержат текущее состояние процессора.

  1. Цикл жизни программы.

Цикл жизни программы включает этапы разработки, выполнения и завершения программы.

Программа создаётся в текстовом редакторе в среде программирования (например Visual Studio). Следующим этапом выполняется компиляция. Интерпретация(Пошаговый переход). Для построения компилятора используется теория Хомского. Н. Программа проходит 3 фазы обработки.

  1. Лексический анализ.

  2. Синтаксический разбор.

  3. Генерация машинного кода.

  4. Линкование (построить выполняемый exe файл.)

Лексический анализ – определение всех имеющихся переменных (формируется таблица символов), проверяются метки, константы а так же имена операторов в командах.

Синтаксический разбор - проверяется правильность записи команд.

  1. Лексический анализ.

Для обработки имен и отдельных слов используется лексический анализатор. Для этого строиться таблица регулярного автомоста.

Состояние

+/-

Цифра

Пуст символ

Любой др. с.

Q0

Q1

Q2

Q0

No

No

Q1

No

Q2

Q1

No

No

Q2

No

Q2

Yes

No

Yes

  1. Синтаксический разбор

Синтаксический разбор более сложный. Его цель распознать не слово а выражение.

Синтаксический разбор простых операция тип x=a+b*2; y=5+4*6;

Надо составить правило грамматики

R1) команда -> имя_переменной = арифм. выражение.

R2) имя_переменной -> распознаётся лексическим анализатором.

R3) арифм_выражение -> число

R4) арифм_выражение -> имя_переменной; Число и переменная <-> термин

R5) арифмет_терм.знак_операнда.арифмет_выражение

R6) знак_операции -> + - * \

Эти правила позволяют построить синтаксический анализатор. Дают возможность построения программы. Применяют разные подходы для синтаксического разбора.

  1. Генерация Кода

Для создания машинного кода удобно использовать польскую инвертную запись.

5 ● X+2 – нормальная запись

5X*2+ - польская запись.

В польской записи не используются скобки

5*(a+2) = 5a2+*

Z=5*x+2; Z5x*2+=

Так же применяется стек. Если терм переменная кон-та, то погружаем в стек.

X

5

Z

Извлекаем из стека 2 первых операнда и создаём машинную команду

1)

Операнд

0…1

0…2

*

X

5

Введём ячейку памяти куда записывается результат этой команды и назовём его Ref1.

Ref1

Z

2+=

2

Ref2

Z

+=

2)

+

Ref1

Z

Ref2

Ref2

Z

=

3)

=

Z

Ref2

*

X

5

Mov

AX

X

Mov

AX

5

Mov

AX

5x