Выполнение программы
Архитектура фон Неймана
- Принцип однородности памяти: команды и данные хранятся в одной и той же памяти внешне в памяти неразличимы.
- Принцип адресности: память состоит из пронумерованных ячеек
- Принцип программного управления: все вычисления представляются в виде последовательности команд.
- Принцип двоичного кодирования: вся информация (данные и команды) кодируются двоичными числами.
Сегментация памяти.
- Оперативная память, используемая в программе на С++.
- сегменты данных
- сегменты кода
- При запуске программы выделяют два сегмента данных
- сегмент глобальных данных
- стек (для локальных переменных)
- В процессе работы могут выделяться и освобождаться дополнительные сегменты памяти.
- Обращения к адресу вне выделенных сегментов - ошибка времени выполнения (access violation / segmentation fault)
Выполнение программмы
- Каждой функции в скомпилированном коде соответствует отдельная секция.
- Адрес начала такой секции - это адрес функции
- Телу функции соответствует последовательность команд процессора.
- Работа с данными происходит на уровне байт, информация о типах отсутствует.
- В процессе выполнения адрес следующей инструкции хранится в специальном регистре процессора IP (Instruction Pointer)
- Команды выполняются последовательно, пока не встретится специальная команда (например, условный переход или вызов функции), которая изменит IP.