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

 
 
 
Reply to this topicStart new topic
> Описание стека в LPC2xxx, У кого есть доки
JeDay
сообщение Feb 23 2006, 20:43
Сообщение #1


Местный
***

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



У кого есть юзер-мануалы по данное тематике? В полных даташитах и описании АРМ ядра этого ненашел. Как адреса возврата сохраняются при вложенных прерываниях и функциях ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 23 2006, 21:06
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(JeDay @ Feb 23 2006, 22:43) *
В полных даташитах и описании АРМ ядра этого ненашел. Как адреса возврата сохраняются при вложенных прерываниях и функциях ?

У ARM на стек возврат не завязан - как сделаете (или Ваш компилятор сделает) так и будет.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 23 2006, 22:33
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(JeDay @ Feb 23 2006, 23:43) *
У кого есть юзер-мануалы по данное тематике? В полных даташитах и описании АРМ ядра этого ненашел. Как адреса возврата сохраняются при вложенных прерываниях и функциях ?


При вызове функции адрес возврата заносится в Link Register (LR, R14).
Далее сама функция может действовать двумя способами:
1. Не модифицировать LR и не вызывать другие функции командой BL.
2. Сохранить LR в стеке, или где-либо еще, и восстановить перед выходом.
Организация и работа вложенных прерываний хорошо описана в мануале на VIC
(Vectored Interrupt Controller), лежит на arm.com.
Go to the top of the page
 
+Quote Post
JeDay
сообщение Feb 24 2006, 15:03
Сообщение #4


Местный
***

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



т.е. если пишу на СИ вложенные функции, компилятор сам сохраняет LR в памяти а потом восстанавливает обратно(я на асме еще не пробовал писать) ?
В кейловском startup.s есть инициализация стеков для различных режимов. Это указатели на разные участки памяти в которые будет производиться програмное сохранение LR ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 24 2006, 15:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да, все верно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 24 2006, 17:07
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(JeDay @ Feb 24 2006, 17:03) *
В кейловском startup.s есть инициализация стеков для различных режимов. Это указатели на разные участки памяти в которые будет производиться програмное сохранение LR ?

Стек для хранения "чего угодно" в том числе, если вдруг захочется, и LR.
А если не захочется, то хранить можно еще:
- в другом регистре;
- в какой-то другой памяти;
Обязаловки в этом вопросе в ARM нет по определению.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
JeDay
сообщение Feb 26 2006, 23:57
Сообщение #7


Местный
***

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



Спасибо за помощь.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 07:26
Рейтинг@Mail.ru


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