Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Регистры Cortex R4.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Omnicake
Здравствуйте, у меня возник вопрос при работе с Cortex R4. В нем, в зависимости от режима микропроцессора, часть регистров заменяется другими, теневыми регистрами (например при режиме FIQ, регистры R8-R14 заменяются на регистры R8_fiq - R14_fiq соответственно). Получается при
адресации на регистр, например, R8 в режиме FIQ, я должен использовать имя R8_fiq, или также R8, но учитывать, что в данный момент этот регистр - теневой?
MALLOY2
Все очень просто, записали в R8 = 12, зашли в прерывание, записали в R8 = 20, вышли, а в R8 попрежнему 12, но когда зайдете опять в прерывание в R8 будет 20.
SII
Цитата(Omnicake @ Jan 19 2014, 09:34) *
Получается при адресации на регистр, например, R8 в режиме FIQ, я должен использовать имя R8_fiq, или также R8, но учитывать, что в данный момент этот регистр - теневой?


Нет, имена регистров всегда остаются одни и те же. Но Вы как программист всегда должны помнить, какие именно это регистры -- т.е. не забывать о текущем режиме работы процессора. Добраться до регистров основного банка можно с помощью команд LDM и STM с, если склероз не изменяет, символом ^ после списка регистров, например: ldmia R0!, {R8-R12}^

Подробней читайте в руководстве на архитектуру ARMv7-A/R (ну или на предыдущие версии архитектуры, с которыми ARMv7 в целом совместима "снизу вверх").
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.