Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Переполнение стека

Алгоритм команды POP reg

Алгоритм команды PUSH reg

 

  RC ß [PC]
  Дешифрация
  [SP] ß reg
  SP ß SP + LR
  PC ß PC + LR
  Проверка INT

 

 

Собственно уникальными для команды PUSН являются только микрооперации 3 и 4. Микрооперации 1, 2, 5, 6 – стандартные, рассматривались в разделе [3.6.2], упоминались при описании алгоритмов ранее рассмотренных команд, и еще не раз будут встречаться в других командах.

 

Рассмотрим уникальные микрооперации:

 

Микрооперация3: запись данных в стек. Содержимое регистр reg записывается в ячейки памяти из области системного стека, те - на которую указывает SP, то есть - в вершину стека. Обратим внимание: поскольку длинна регистра больше длинны ячейки памяти, записанные данные займут не одну, а несколько соседних ячеек памяти, а именно LR ячеек. Где LR - длинна регистра. Смотрите [1.7.4]

 

Микрооперация 4: подготовка к выполнению следующей уже следующих команд работы со стеком. Нам необходимо, чтобы следующие данные - были записаны не на тоже место где, только что, был сохранён регистр, а на другое, пока свободное место в области стека. Поэтому к SP добавляется LR – длина регистра, после чего: SP снова будет указывать на первую из незанятых ячеек в области стека. Говорят – "вершина стека переместилась вверх". Так вершина стека будет перемещаться вверх - после выполнения и каждой последующей команды PUSH.

 

 

  RC ß [PC]
  Дешифрация
  SP ß SP - LR
  reg ß [SP]
  PC ß PC + LR
  Проверка INT

 

Рассмотрим уникальные микрооперации:

 

Микрооперация 3: Вычитаем из SP LR, тем – переводим указатель вниз - с вершины стека, на последние из занятых данными ячейки из области стека. То есть: теперь SP указывает на то слово данных что заносилось в стек последним (вспомним принцип работы стековой памяти).

 

Микрооперация 4: Чтение данных из стека в регистр reg.. В регистр прочитается как раз то слово что и было занесено последним. Часть ячеек стека "освобождена", SP – снова указывает на последнюю из незанятых данными ячеек из области стека.

 

Указатель в ходе выполнения POP - переместился вниз, и будет перемещаться вниз - с каждым новым выполнением команды POP.

 

1) Заметим что в стек может быть записан ограниченный объём данных. Если длинна регистра - LR а число ячеек ОЗУ отведённых под область стека N одновременно и без неприятных последствий в стек может быть записано не более не более N/ LR значений регистров.

 

2) Если вся область стека уже заполнена данными, а программа продолжила записывать данные в область стека – данные записываются в область ОЗУ уже не отводимую под область стека. Записанные слова данных могут повредить другие данные, или программы расположенные на адресах лежащих выше отведённых под область стека. Такую ситуацию принято называть "переполнение стека", и переполнение стека – может вызвать серьёзные разрушения работы операционной системы и программ.

 

3) Между прочим: намеренное целенаправленное переполнение системного стека создают многие программы-вирусы, пытаясь, тем самым - нарушить работу операционной системы и обойти средства защиты ОC.

 

 

 

<== предыдущая лекция | следующая лекция ==>
Область стека | Введение. 1) Тот стек, что был рассмотрен выше, и с которым работают команды PUSH и POP, используется для реализации важных системных функции (в частности – при
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 319; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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