- •Оглавление
- •Основные концепции ос
- •Архитектура эвм
- •Регистровый блок процессора. Флажки.
- •Цикл жизни программы.
- •Лексический анализ.
- •Синтаксический разбор
- •Генерация Кода
- •Файловые системыFat, ntfs
- •Проблема фрагментации диска и её решение.
- •Сжатие файлов на диске
- •Шифрование файлов
- •Сжатие графических файлов
- •Метод близнецов и метод чисел Фибоначчи для управления памятью
- •Алгоритм Банкира
- •Виды памяти и их назначение.
- •Использование стека для получения польской записи
- •Управление процессами
- •Обнаружение и предупреждение тупиков
- •Классификация систем параллельной обработки процессов
- •Планирование параллельной обработки с квантованием времени
- •Планирование выполнения взаимосвязанных задач
- •Маршрутизация сообщений в сети.
- •Управление доступом на канальном уровне. (csdma/cd…)
- •3.2.4. Множественный доступ с разделением частоты
- •Основные методы Ассемблера
Регистровый блок процессора. Флажки.
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.
Регистры флагов - содержат текущее состояние процессора.
Цикл жизни программы.
Цикл жизни программы включает этапы разработки, выполнения и завершения программы.
Программа создаётся в текстовом редакторе в среде программирования (например Visual Studio). Следующим этапом выполняется компиляция. Интерпретация(Пошаговый переход). Для построения компилятора используется теория Хомского. Н. Программа проходит 3 фазы обработки.
Лексический анализ.
Синтаксический разбор.
Генерация машинного кода.
Линкование (построить выполняемый exe файл.)
Лексический анализ – определение всех имеющихся переменных (формируется таблица символов), проверяются метки, константы а так же имена операторов в командах.
Синтаксический разбор - проверяется правильность записи команд.
Лексический анализ.
Для обработки имен и отдельных слов используется лексический анализатор. Для этого строиться таблица регулярного автомоста.
Состояние |
+/- |
Цифра |
Пуст символ |
Любой др. с. |
|
Q0 |
Q1 |
Q2 |
Q0 |
No |
No |
Q1 |
No |
Q2 |
Q1 |
No |
No |
Q2 |
No |
Q2 |
Yes |
No |
Yes |
Синтаксический разбор
Синтаксический разбор более сложный. Его цель распознать не слово а выражение.
Синтаксический разбор простых операция тип x=a+b*2; y=5+4*6;
Надо составить правило грамматики
R1) команда -> имя_переменной = арифм. выражение.
R2) имя_переменной -> распознаётся лексическим анализатором.
R3) арифм_выражение -> число
R4) арифм_выражение -> имя_переменной; Число и переменная <-> термин
R5) арифмет_терм.знак_операнда.арифмет_выражение
R6) знак_операции -> + - * \
Эти правила позволяют построить синтаксический анализатор. Дают возможность построения программы. Применяют разные подходы для синтаксического разбора.
Генерация Кода
Для создания машинного кода удобно использовать польскую инвертную запись.
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 |