notes

Выполнение программы

Архитектура фон Неймана

  1. Принцип однородности памяти: команды и данные хранятся в одной и той же памяти внешне в памяти неразличимы.
  2. Принцип адресности: память состоит из пронумерованных ячеек
  3. Принцип программного управления: все вычисления представляются в виде последовательности команд.
  4. Принцип двоичного кодирования: вся информация (данные и команды) кодируются двоичными числами.

Сегментация памяти.

  1. Оперативная память, используемая в программе на С++.
    • сегменты данных
    • сегменты кода
  2. При запуске программы выделяют два сегмента данных
    • сегмент глобальных данных
    • стек (для локальных переменных)
  3. В процессе работы могут выделяться и освобождаться дополнительные сегменты памяти.
  4. Обращения к адресу вне выделенных сегментов - ошибка времени выполнения (access violation / segmentation fault)

Выполнение программмы

  1. Каждой функции в скомпилированном коде соответствует отдельная секция.
  2. Адрес начала такой секции - это адрес функции
  3. Телу функции соответствует последовательность команд процессора.
  4. Работа с данными происходит на уровне байт, информация о типах отсутствует.
  5. В процессе выполнения адрес следующей инструкции хранится в специальном регистре процессора IP (Instruction Pointer)
  6. Команды выполняются последовательно, пока не встретится специальная команда (например, условный переход или вызов функции), которая изменит IP.