Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: А как вызывать подпрограммы?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
777777
Почему адрес возврата помещается не в стек, а в регистр? А как быть с вложенными подпрограммами? Я уж не говорю о том, что прерывания используют тот же регистр. Где сохраниять значение этого регистра?
HARMHARM
Цитата(777777 @ Jul 10 2009, 07:01) *
Почему адрес возврата помещается не в стек, а в регистр? А как быть с вложенными подпрограммами? Я уж не говорю о том, что прерывания используют тот же регистр. Где сохраниять значение этого регистра?

Потому что у ARM есть специальный регистр для адреса возврата. Если подпрограммы вложенные, перед вызовом следующей подпрограммы содержимое LR сохраняется в стек.
У прерываний отдельный свой набор регистров.
Все это тысячу раз разжевано, почитайте любую книгу.
777777
Цитата(HARMHARM @ Jul 10 2009, 09:50) *
Потому что у ARM есть специальный регистр для адреса возврата. Если подпрограммы вложенные, перед вызовом следующей подпрограммы содержимое LR сохраняется в стек.

Значит в каджой подпрограмме надо первым делом сохранить в стеке регистр связи?

Цитата(HARMHARM @ Jul 10 2009, 09:50) *
У прерываний отдельный свой набор регистров.

А во время входа в прерывание используется уже свой набор или еще старый?

Цитата(HARMHARM @ Jul 10 2009, 09:50) *
Все это тысячу раз разжевано, почитайте любую книгу.

Этим и занимаюсь...
HARMHARM
Цитата(777777 @ Jul 10 2009, 10:20) *
Значит в каджой подпрограмме надо первым делом сохранить в стеке регистр связи?

Только если будете вызывать подпрограммы.
Цитата
А во время входа в прерывание используется уже свой набор или еще старый?

Используется набор IRQ или FIQ в зависимости от прерывания.
Rst7
Цитата
Значит в каджой подпрограмме надо первым делом сохранить в стеке регистр связи?


Только если эта подпрограмма вызывает другие подпрограммы.

Цитата
А во время входа в прерывание используется уже свой набор или еще старый?


Свой. Так что LR пользовательского режима не портится.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.