Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Обзоры по типам > Микроконтроллеры > ARM

реклама

 




Мероприятия:




Формат 5: Команды для работы с Hi регистрами и команда перехода со сменой состояния

Формат 5
Рис. 43. Формат 5

Действия

Существуют четыре комады этой группы. Первые трия из них выполняют сложени (ADD) сравнение (CMP) и копирование (MOV) между Hi и Lo или Hi и Hi регистрами. Четвертая команда - переход (BX) выполняет переход (Branch) одновеременно с возможностью переключения состояния процессора. Синтаксис в асеемблере для команд этой группы приведен в табл. 16.

Примечание: из этой группы только команда CMP (Op = 01) влияет на флаги регистра CPSR. Реультаты выполнения команд ADD (Op = 00), CMP (Op = 01) и MOV (Op = 10) при H1 = 0, H2 = 0 неопределен, поэтому такие команды применять не следуют.

Табл. 16. Команды формата 5

OP H1 H2 THUMB ассемблер ARM эквивалент Действия
00 0 1 ADD Rd, Hs ADD Rd, Rd, Hs Сложить содержимое регистра 8…15 с регистром 0…7.
00 1 0 ADD Hd, Rs ADD Hd, Hd, Rs Сложить содержимое регистра 0…7 с регистром 8…15.
00 1 1 ADD Hd, Hs ADD Hd, Hd, Hs Сложить содержимое регистра 8…15 с регистром 8…15.
01 0 1 CMP Rd, Hs CMP Rd, Hs Сравнить регистр 0…7 с регистром 8..15, установив/сбросив флаги регистра CPSR в зависимости от результата.
01 1 0 CMP Hd, Rs CMP Hd, Rs Сравнить регистр 8…15 с регистром 0..7, установив/сбросив флаги регистра CPSR в зависимости от результата.
01 1 1 CMP Hd, Hs CMP Hd, Hs Сравнить регистр 8…15 с регистром 8..15, установив/сбросив флаги регистра CPSR в зависимости от результата.
10 0 1 MOV Rd, Hs MOV Rd, Hs Скопировать содержимое регистра 8…15 в регистр 0…7
10 1 0 MOV Hd, Rs MOV Hd, Rs Скопировать содержимое регистра 0…7 в регистр 8…15.
10 1 1 MOV Hd, Hs MOV Hd, Hs Скопировать содержимое регистра 8…15 в регистр 8…15.
11 0 0 BX Rs BX Rs Выполнить переход (со сменой состояния ядра) по адресу, указанному в гегитре 0…7.
11 0 1 BX Hs BX Hs Выполнить переход (со сменой состояния ядра) по адресу, указанному в гегитре 8…15.

Число машинных тактов при выполнения команд

Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 16. Число машинных тактов выполнения этих команд в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.

Команда BX

BX выполняет переход на подпрограмму, которая начинается с адреса, указанного в Lo и Hi регистрах. Нулевой бит этого адреса определяет состояние процессора перед вызовом подпрограммы: 0 - процессор переводится в состояние ARM, 1 - состояние THUMB.

Примечание: При H1 = 1 действия команды BX не определены, поэтому не следует применять ее в таком виде.

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

Если R15 является операндом, то адресом перехода при выполнении команды BX будет адрес самой этой команды + 4 байта со очищенным нулевым битом.

Примечание: Результат выполнения команды BX PC в THUMB режиме с невыровненным по границе слова адресом непроедсказуем, поэтому не следует применять ее в таком виде.

Примеры

Команды с Hi регистрами
     ADD PC, R5        ; PC := PC + R5 без влияния на флаги CPSR
     CMP R4, R12       ; Изменить флаги CPSR в зависимости от результата (R4-R12)
     MOV R15, R14      ; Скопировать регистр R14 (LR) в регистр R15 (PC)
                       ; без влияния на флаги CPSR.
                       ; Например, это - вызов подпрограммы

Переход и смена состояния ядра
                       ; Переключить состояние ядра из режима THUMB в режим ARM
     ADR R1,outofTHUMB
     ADR R1,outofTHUMB ; Загрузить в регистр R1 адрес "outofTHUMB"


     MOV R11,R1        ; Скопировать R1 в R11
     BX R11            ; Скопировать R11 в PC.
                       ; Бит 0 в регистре R11 определяет будущее состояние
                       ; ядра перед переходом: ARM или THUMB.
                       ; В данном случае переключение произойдет в режим ARM.
     ...
     ALIGN
     CODE32
outofTHUMB
                       ; Теперь ядро находится в режиме ARM


<-- Предыдущая страница Оглавление Следующая страница -->

детские оздоровительные лагеря




 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники