русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Реализация стека


Дата добавления: 2015-06-12; просмотров: 583; Нарушение авторских прав


Операции со стеком поддерживаются тремя регистрами:

  1. Регистр сегмета стека (SS). Стеки размещаются в памяти. количество стеков в системе ограничивается только максимальным числом сегментов. Размер стека не может превышать 4 Гбайт, что соответствует максимальному размеру сегмента для процессора i486. В каждый момент времени доступен только один стек - стек, селектор сегмента которого содержится в регистре SS. Этот стек называется текущим, однако далее слово "текущий" будет, как правило, опускаться, а текущий стек будет называться просто "стеком". Регистр SS автоматически используется процессором для выполнения всех операций со стеком.
  2. Регистр указателя стека (ESP). В регистре ESP содержится относительный адрес вершины стека в текущем сегменте стека. Его значение используется командами POP и PUSH, при вызове подпрограмм и при возврате, исключениями и прерываниями. При занесении элемента в стек (смотри Рисунок 2-8), процессор уменьшает значение регистра ESP, а затем записывает элемент по адресу новой вершины. При извлечении данных из стека, процессор копирует элемент, расположенный по адресу вершины, а затем увеличивает значение регистра указателя стека. Иными словами, стек растет вниз, в сторону уменьшения адресов.
3. +--------------------------------------------------------------+4. | |5. | Сегмент стека |6. | |7. | 31 0 |8. |+-----------------------+ |9. || |<-------- Начало стека |10. |+-----------------------| ( определяется значением |11. || | регистра ESP ) |12. |+-----------------------| |13. || | |14. |+-----------------------| |15. || | |16. |+-----------------------| |17. || | |18. |+-----------------------| +-----------------------+ |19. || Вершина стека |<-------| ESP | |20. |+-----------------------+ +-----------------------+ |21. | |22. | +----+ +----+ |23. | | | | При занесении данных, |/ \ | При удалении данных,|24. | | | | вершина стека переме- | | | вершина стека |25. | | | | щается к меньшему ад- | | | перемещается |26. | | | | рес. | | | к большему адресу. |27. | |\ / | | | | |28. | +----+ +----+ |29. | |30. +--------------------------------------------------------------+31. Рисунок 2-8 Стеки
  1. Регистр указателя базы кадра стека (EBP). Данный регистр, как правило, используется для доступа к структурам данных, содержащимся в стеке. Например, при входе в подпрограмму, стек содержит адрес возврата и некоторое число параметров, передаваемых в данную подпрограмму. Подпрограмма, при необходимости создания временных локальных переменных, использует стек, что приводит к изменению указателя стека по мере занесения и удаления данных в стеке. Если перед началом выполнения операций со стеком указатель стека копируется в базовый указатель кадра стека, последний может быть использован для доступа к данным, имеющим фиксированное смещение в сегменте стека. Если этого не делать, доступ к структурам данных, имеющим фиксированное смещение, может быть утерян в процессе занесения в стек и удаления из стека временных переменных. При использование регистра EBP для хранения адреса пямяти, текущий сегмент обязательно должен быть выбран (установлен регистр SS). Т.к. нет необходимости указывать сегмент стека в каждой команде, их кодирование становится более компактным. Регистр EBP может также использоваться для адресации других сегментов. Такие команды как ENTER и LEAVE предусматривают автоматическое использование регистра EBP для обеспечения удобного доступа к переменным.


<== предыдущая лекция | следующая лекция ==>
Регистры сегментов | Регистры флагов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.391 сек.