В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная > Обзоры по типам > Микроконтроллеры > ARM > Система команд
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Однократный обмен данными (SWP)

Эта команда будет выполнена, если условие истинно. Все различные условия ее выполнения перечислены в таблице 6. Машинный код команды приведен на рис.32.

Команда обмена данными
Рис. 32. Команда обмена данными

Команда обмена данными используется для взаимного обмена между содержимым регистра в виде байта или целого слова и внешней памятью. Эта команда состоит из последовательности операций чтения из памяти и записью в нее, которые неразрывны по своей сути (процессор не может прервать эти операции, пока обе они не будут завершены, а диспетчер управления памятью должен рассматривать их как одно целое). Эта команда особенно полезна для реализации программных "семафоров".

Адрес для обмена определяется содержимым базового регистра (Rn). Вначале выполнения команды процессор вычитывает этот адрес, затем записывает содержимое регистра-источника (Rm) по этому адресу, и, наконец, записывает прежнее содержимое ячейки памяти, адрес которой определен в регистре-получателе (Rd). Кроме того, один и тот же регистр может выполнять одновременно роль и регистра-источника и регистра-получателя.

Выход LOCK переходит в высокое активное состояние на время выполнения операций чтения и записи для того, чтобы запретить прерывание от диспетчера памяти. Этот факт очень важен в многопроцессорных системах, в которых команда обмена может быть реализована только как неделимая. Недопустимо, чтобы во время выполнения команды процессор смог потерять контроль над памятью.

Байты и слова

Команда этого класса может использоваться для обмена между регистрами ARM7TDMI и памятью как байтами (B=1), так и словами (B=0). Команда SWP фактически состоит из последовательности команд LDR и STR, действия которых рассматриваются как однократные передачи данных. При этом сохраняется зависимость от типа конфигурации: Little Endian или Big Endian.

Использование R15 в качестве базового регистра

Недопустимо использование регистра R15 в качестве операндов (Rd, Rn и Rs) в команде SWP.

Прерывания во время передачи данных (data aborts)

Если адрес, используемый в команде SWP, недоступен для системы управления памятью, то диспетчер памяти может сообщить об этом посредством установки сигнала ABORT в активное высокое состояние. Это может произойти как во время цикла чтения, так и во время цикла записи (или обоих сразу), в этом случае будет передано управление обработчику такой исключительной ситуации (Data Abort). После того, как причина прерывания будет выявлена и устранена, прерванная команда может быть повторно выполнена.

Число машинных тактов

Команда SWP выполняется за 1S + 2N + 1I, где S, N и I зависят от типа машинных тактов.

Синтаксис в ассемблере

<SWP>{cond}{B} Rd,Rm,[Rn]

где:

{cond}: двухсимвольная мнемоника условия выполнения команды (см. табл. 6);
{B}: при наличии определяет режим байтовой передачи, при отсутствии - словарный режим обмена;
Rd,Rm,Rn: выражения, которые определяют номера регистров общего назначения.

Примеры

SWP     R0,R1,[R2]    ; Загрузить в R0 слово по адресу в R2, и сохранить R1 в R2.
SWPB    R2,R3,[R4]    ; Загрузить в R2 байт по адресу в R4, 
                      ; и сохранить младший байт R3 в R4.
SWPEQ   R0,R0,[R1]    ; По условию обменять слово, определенное по адресу в R1
                      ; и содержимым в регистре R0.


<---- Вернуться к Системе команд --->