MegaCraZy6
@MegaCraZy6
Юзерь

Архитектура компьютера, где размещен стек?

Где в ПК размещен стек? Как именно?
Просто я не понимаю если он размещен допустим в ОЗУ где именно если в реальном режиме адресации. На верхней границе ОЗУ FFFFh или как?
  • Вопрос задан
  • 390 просмотров
Решения вопроса 2
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
Везде по разному.

К примеру для современных Windows запуск исполняемого файла приводит к созданию вирт.адресного пространства. Загрузчик запуская исполняемый файл смотрит в системные данные в этом файле(PE-заголовок) и берет от туда необходимые значения. Далее выделяет в этом адресном пространстве область, которую запущенная программа и будет использовать как стек.

В DOS программах по-другому. Если это COM-файл, то выделяется сначала 0x100 байт в качестве Program System Prefix, т.е. спец. область для системных данных. Далее целиком из com в память и только потом выделяет область под стек.

После создания области под стек указатель присвается в указатель стека, к примеру в регистр esp.

В современных системах Linux\Windows\OS X процесс настройки стека похожи. Разве что различия в формате исполняемых файлов и организации адресного пространства. Но поняв один раз под одну из этих систем, то получаешь понимание как это примерно организовано для других.
Ответ написан
@JustMoose
Программист. Радиолюбитель. Прокрастинатор ;)
Реальный режим - это программа под DOS?
Насколько я помню, там при старте программы стек нужно было настраивать самому.
Прям первой инструкцией в программе.
Точное расположение, кажется, зависело от модели памяти.
Вот здесь подробнее: ru.osdev.wikia.com/wiki/%D0%9C%D0%BE%D0%B4%D0%B5%D...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы