реклама на сайте
подробности

 
 
> User Mode Stack в обработчике исключения, LPC2378 Exceptions
amw
сообщение Feb 25 2008, 16:24
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Для примера и определения архитектуры:
Процессор LPC2378, т.е. ARM7TDMI-S

Процессор работает в USER MODE. Происходит исключение, любое, UNDEF, PREFETCH ABTORT, DATA ABORT.
Переходим в обработчик.

Вопрос:
Как в обработчике исключения узнать значение регистра SP, из USER MODE?
Нужно положить на вершину USER MODE стека значение полученное в обработчике EXCEPTION.
В общем случае, нужно в обработчике исключения знать значене SP режима, в котором произошло это исключение.

Что-то в мануале на ARM найти не могу.
Может кто ткнет в правильный мануал или пример.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zhevak
сообщение Feb 25 2008, 19:28
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(amw @ Feb 25 2008, 21:24) *
Нужно положить на вершину USER MODE стека значение полученное в обработчике EXCEPTION.


Я извиняюсь. Правильно ли я понял, что USER MODE у Вас выполняется единственная функция?

По моему, то, что Вы пытаетесь сделать, это несколько порочная практика. Представьте, что в Ваш проект разросся, и теперь в нем в юзеровском режиме дюжина функций. Заранее нельзя знать в какой момент возникнет исключение, т.е. нельзя предполагать, что, вот, в этой функции исключение не возникнет, а, вот, в этой -- возникнет.

Исключение может возникнуть в любее время, т.е. при выполнении любой функции. Значит, Вам нужно будет прописывать Ваш код (получающий инфц из исключения) во всех функциях. Но это еще пол-беды! Стек -- это такая бестия, что может оказаться, что вы затрете какие-нибудб жизненно важные данные. Как говориться, последствия не предсказуемы.

Если Вам нужно из исключения передать какую-то инфу на уровень юзера, используйте глобальные переменные с модфикатором volatile. Зачем Вам проламываться через бурелом (там все равно ничего полезного нет! Одни траблы.), когда рядом лежит классическая ровная дорога?


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- amw   User Mode Stack в обработчике исключения   Feb 25 2008, 16:24
- - KRS   Цитата(amw @ Feb 25 2008, 19:24) Процессо...   Feb 25 2008, 16:32
|- - amw   Цитата(KRS @ Feb 25 2008, 18:32) IMHO в A...   Feb 25 2008, 16:39
- - GetSmart   Дык SP USER MODE виден (аппаратно!) только из ...   Feb 25 2008, 16:46
|- - amw   Цитата(zhevak @ Feb 25 2008, 21:28) Я изв...   Feb 26 2008, 08:48
|- - KRS   Цитата(amw @ Feb 26 2008, 11:48) 2) - Реа...   Feb 26 2008, 09:23
|- - amw   Цитата(KRS @ Feb 26 2008, 11:23) Вот это ...   Feb 26 2008, 09:57
- - GetSmart   Мне кажется, это иммитация вызова процедуры в USER...   Feb 25 2008, 19:36
|- - KRS   Цитата(GetSmart @ Feb 25 2008, 22:36) Мне...   Feb 25 2008, 19:45
|- - aaarrr   Цитата(KRS @ Feb 25 2008, 22:45) Да и воо...   Feb 25 2008, 19:48
- - KRS   а не проще ли для этого использовать SWI эта инстр...   Feb 26 2008, 11:10
- - amw   Цитата(KRS @ Feb 26 2008, 13:10) а не про...   Feb 26 2008, 15:27
- - Сергей Борщ   Цитата(amw @ Feb 26 2008, 17:27) Действит...   Feb 26 2008, 15:51
- - amw   Цитата(Сергей Борщ @ Feb 26 2008, 17:51) ...   Feb 27 2008, 08:42
- - KRS   Цитата(amw @ Feb 27 2008, 11:42) Библиоте...   Feb 27 2008, 12:57
- - amw   Цитата(KRS @ Feb 27 2008, 14:57) А что за...   Feb 28 2008, 08:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016