Поиск по сайту: |
|
По базе: |
|
Главная > Обзоры по типам > Микроконтроллеры > ARM > Система команд |
|
||||||||||||||||||||||||
Команды обмена данными с сопроцессором (LDC,STC)Эти команды будут выполнены, если условие истинно. Все различные условия их выполнения перечислены в таблице 6. Машинный код обеих команд приведен на рис.35.
Команды этого класса используются для чтения (LDC) или записи (STC) регистров сопроцессоров непосредственно из/в память. Ядро ARM7TDMI передает сопроцессору адрес ячейки памяти, а сопроцессор в свою очередь возвращает ядру данные и их количество в словах. Поля сопроцессора Поле CP# используется для идентификации того сопроцессора, который должен передать или принять данные, при этом команду выполнит только тот сопроцессор, номер которого совпадает с номером в поле CP#. Поле CRd и бит N содержат информацию, которая может по-разному интерпретироваться различными сопроцессорами. Но регистр CRd всегда выполняет роль регистра, который должен быть передан (или первый регистр из списка при блочной передаче), а бит N определяет длину передачи: при N=0 обмен производиться только с одним регистром (CRd), при N=1 - со всеми регистрами (для переключения контекста задач). Режимы адресации ARM7TDMI отвечает за предоставление адреса, используемого системой памяти для передачи, и режимы ее адресации, которые позволяют разложить длинную передачу на серию команд однократной передачи данных. Необходимо отметить, что поле смещения - это 8-битная константа, определяющая смещение кратно одному слову для обмена данными с сопроцессором, но в самих командах передачи она фактически имеет 12 битную ширину и определяет смещение кратно одному байту. Во время выполнения команды содержимое поля смещения сдвигается влево на 2 бита (умножить на 4) и потом либо складывается (U=1) с содержимым базового регистра (Rn), либо вычитается из него (U=0); эти действия могут быть выполнены либо до непосредственно самой передачи (P=1), либо после нее (P=0). Модифицированное значение базового регистра либо может быть перезаписано обратно в него же (W=1), либо сохранить свое прежнее значения до выполнения команды. Кроме того, что команды SDC и STC требуют явного указания значения бита W в отличии от команд LDR и STR, в которых всегда происходит модификация базового регистра (W=1) при пост-индексной адресации. Содержимое базового регистра, к которому уже добавлено (вычтено) смещение в команде пред-индексной адресации, используется как адрес первого слова для передачи. Второе слово (если передается более чем одно слово) буде записано/прочитано по адресу на одно слово больше (4 байта), чем адрес первого слова, и для каждого последующего слова адрес передачи будет инкрементирован на 4 байта. Выравнивание адреса Базовый адрес должен быть выровнен по границе одного слова (4 байта). Однако младшие 2 бита адреса A[1:0] могут использоваться системой управления памятью, например, для эмуляции передачи слова выполняя последовательность из четырех байтовых (8-битная адресация) или двух полусловарных (16-битная адресация) выборок. Использование регистра R15 Если регистра Rn - это регистр R15, то содержимым Rn будет адрес самой команды плюс 8 байт. При этом бит перезаписи в команде должен быть сброшен (W=0). Прерывания во время передачи данных (data aborts) Если адрес, используемый в команде SWP, недоступен для системы управления памятью, то диспетчер памяти может сообщить об этом посредством установки сигнала ABORT в активное высокое состояние. Если W=1, то содержимое базового регистра уже успеет измениться, но состояние процессора будет сохранено. На сам сопроцессор все же возлагается часть забот для возможности успешного повтора прерванной команды после того, как причина прерывания будет выявлена и устранена. Число машинных тактов Команда LDC и STC выполняются за (n-1)S + 2N + bl, где n - число передаваемых слов, b - число машинных тактов, необходимых для выполнения пустых тактов сопроцессора, а S, N и I зависят от типа машинных тактов. Синтаксис в ассемблере <LDC|STC>{cond}{L} p#,cd,<Адрес> где:
Примечание: если Rn = R15, то ассемблер вычтет 8 из смещения, это необходимо для правильной работы конвейера команд ARM7TDMI. Примеры
Примечание: хотя смещение адреса и выражается в байтах, но смещение в самой команде все же выражается в словах. Ассемблер автоматически исправит это поле. <---- Вернуться к Системе команд ---> Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|