|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.07.2010, 00:33 | #1 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Переполнение аппаратного стека
Здравствуйте!
Возник вопрос, помощь в решении которого я прошу у Вас=) Есть аппаратный стек, возможно ситуация когда он проваливается, вопрос в том что делать если он провалился? Вызывать прерывание(как-то немного бредово, имхо, да и на контроллерах я такого не видел), все время писать в верхнюю ячейку, или начать писать по новой? P.S. Почему аппаратный лучше не спрашивайте, архитектура такая xD P.S.S. Про Попова тоже желательно не вспоминать))) Последний раз редактировалось Levsha100; 13.07.2010 в 00:45. |
13.07.2010, 01:04 | #2 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Ну так а какая архитектура?
Что подразумевает аппаратный стек? Это просто аппаратная обработка команд типа (ret iret push pop и т.д.) или что-то большее? Если что-то большее, то где находится стек? Поидее, стек должен находиться в ОЗУ, т.е. там же, где находятся переменные. В таком случае чудеса в программе начнутся гораздо раньше, чем стек переполнится. Стек на контроллере, это забота программиста, а не контроллера. Так что ничего не делать, совсем ничего не делать.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
13.07.2010, 01:08 | #3 | ||||
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Цитата:
Пока Гарвардская, но может немного позже осилю и фон Неймана. Цитата:
Цитата:
Цитата:
Последний раз редактировалось Levsha100; 13.07.2010 в 01:12. |
||||
13.07.2010, 01:30 | #4 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Цитата:
Я вообще немного о другом. В любом случае стек - это кусок памяти, работающий по определённым правилам (LIFO - FIFO). Как будет контролироваться переполнение стека это как раз и зависит от того, как эта память организована (разделяет она одну область озу с пользовательскими данными или нет). Например, как можно, проконтролировать переполнение стека на AVR-е? Вобще как можно контролировать переполнение стека, наверное, определив его верхнюю и нижнюю границы. Тогда для этого какие-то специальные регистры можно придумать. Если всё это будет аппаратно реализовано, то тогда не грех и прерывание по такому случаю поднять. Какое нибудь коварное (типа Reset).
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
|
13.07.2010, 01:37 | #5 |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Стек будет как отдельное устройство, пока тупо два входа (push, pop) и вход/выход инфы(ну и переход в высокоимпедансное состояние) + возможен выход для прерывания. Пока все =))
Наверно просто запрещу запись и повешу флаг переполнения. Последний раз редактировалось Levsha100; 13.07.2010 в 01:42. |
13.07.2010, 01:56 | #6 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Цитата:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
|
13.07.2010, 01:59 | #7 | ||
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
Цитата:
Цитата:
Я вот что подумал: если я захочу прикрутить многозадачность, то стек нужно выделять в памяти процесса, значит нужно его размещать в оперативке или делать грабли. Ладно, пока это тестовый набросок без многозадачностей и всяких плюшек, так что обойдемся пока внешним стеком. Последний раз редактировалось Levsha100; 13.07.2010 в 02:03. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переполнение стека | NoHeart | Общие вопросы Delphi | 8 | 08.11.2009 16:03 |
Переполнение стека (Stack overflow) | zotox | Помощь студентам | 4 | 13.09.2009 03:16 |
переполнение стека. помогите решить эту проблему | Hikari | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 01.06.2009 18:58 |
Переполнение стека | Ake | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 30.05.2009 22:39 |
Переполнение Стека | Викдон | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 19.12.2008 19:16 |