Например TDA7294

Форум РадиоКот • Просмотр темы - Условное выполнение инструкций Cortex M4
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 20, 2025 06:52:37

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Условное выполнение инструкций Cortex M4
СообщениеДобавлено: Ср янв 08, 2014 14:01:40 
Открыл глаза

Зарегистрирован: Ср май 28, 2008 14:33:11
Сообщений: 67
Откуда: Россия, Саров
Рейтинг сообщения: 0
Привет, народ! Поздравляю всех с Новым Годом!

Я вот что-то не понимаю, объясните, пожалуйста, В чём разница между вот этим:

Код:
CMP       R1, R0
MOVEQ     R2, R1
MOVNE     R2, R0


И вот этим:

Код:
CMP       R1, R0
ITE       EQ
MOVEQ     R2, R1
MOVNE     R2, R0


А именно, какова роль инструкции ITE во втором случае? Разве суффиксы EQ и NE
сами по себе не дают нужного эффекта?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Условное выполнение инструкций Cortex M4
СообщениеДобавлено: Ср янв 08, 2014 15:55:33 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 1
В системе команд ARM все "обычные" и изрядная часть прочих инструкций имеют возможность условного выполнения. Однако в системе команд Thumb -- а только она имеется в любых процессорах М-профиля (т.е. в ядрах серии Cortex-M) -- нет никаких условно выполняемых команд, кроме переходов Bxx. Поэтому, чтобы обеспечить-таки возможность условного выполнения коротких последовательностей команд (до четырёх), в Thumb-2 была введена специальная инструкция IT. В просто Thumb (это все старые процессоры, кроме архитектуры ARMv6T2, а также ядро Cortex-M0) этой инструкции нет, поэтому условное выполнение команд там невозможно (за исключением уже упоминавшихся условных переходов).

В принципе, транслятор ассемблера мог бы разобраться и вставить IT сам, видя, что указаны суффиксы условий. Но, во-первых, это может быть не реализовано в конкретном трансляторе, во-вторых, явно показывает, что там имеется отдельная инструкция (а следовательно, под неё выделяется память), ну а в-третьих, позволяет дополнительно убедиться в правильности условий в последующих командах, а также точно определить границу IT-блока, поскольку инструкция IT задаёт ещё и число условных операций за ней (например, ITTEE указывает, что будет 4 инструкции: сначала две с прямым условием, а затем две с обратным).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Условное выполнение инструкций Cortex M4
СообщениеДобавлено: Ср янв 08, 2014 16:07:55 
Открыл глаза

Зарегистрирован: Ср май 28, 2008 14:33:11
Сообщений: 67
Откуда: Россия, Саров
Рейтинг сообщения: 0
Правильно ли я понял, что в случае Cortex-M процессоров, в инструкциях, составляющих тело IT-блока, суффиксы можно писать, а можно не писать, эффект будет одинаковый?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Условное выполнение инструкций Cortex M4
СообщениеДобавлено: Ср янв 08, 2014 16:10:26 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 0
Зависит от транслятора: если по-хорошему, он должен бы ругнуться на отсутствие условий у инструкций, попадающих в IT-блок (а вдруг программист ошибся и либо неверно написал IT, либо пропустил условно выполняемую команду?).


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Условное выполнение инструкций Cortex M4
СообщениеДобавлено: Ср янв 08, 2014 17:03:35 
Открыл глаза

Зарегистрирован: Ср май 28, 2008 14:33:11
Сообщений: 67
Откуда: Россия, Саров
Рейтинг сообщения: 0
Значит это всё из-за особенностей Кортексов. А суффиксы пишут для совместимости с разными ассемблерами. Вот теперь всё понятно! Благодарю за обстоятельное разъяснение!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Условное выполнение инструкций Cortex M4
СообщениеДобавлено: Ср янв 08, 2014 23:02:29 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 41
Зарегистрирован: Пт янв 30, 2009 14:50:35
Сообщений: 635
Откуда: Солнечногорск
Рейтинг сообщения: 0
Карась писал(а):
Значит это всё из-за особенностей Кортексов


"Кортексы" поминают постоянно, но, строго говоря, это некорректно. Cortex -- это общее название группы процессорных ядер, но они могут сильно различаться между собой. Есть ядра для "обычных" микроконтроллеров -- так называемый M-профиль. Они соответствуют версиям архитектуры ARMv6-M (Cortex-M0) и разным вариантам ARMv7-M (другие ядра Cortex-M). Есть ядра для высокопроизводительных и особо надёжных (ну, так декларировано) микроконтроллеров -- R-профиль (серия Cortex-R), соответствующая версии архитектуры ARMv7-R. Наконец, есть ядра, предназначенные для микропроцессоров, а не микроконтроллеров -- A-профиль (Cortex-A), соответствующий версии ARMv7-A. Так вот, версии ARMv7-R и ARMv7-A, т.е. серии ядер Cortex-R и Cortex-A, являются "истинными" ARMами, имеющими и систему команд ARM, и систему команд Thumb; именно они совместимы снизу вверх со всеми предыдущими версиями (кроме ARMv6-M). Ну а M-профиль -- это уже как бы и не настоящий ARM, поскольку ARMовская система команд у него отсутствует; кроме того, кардинально отличается системная архитектура (обработка прерываний и т.д.). Вот по этой причине поминать "Кортексы" обычно технически некорректно -- в Вашем конкретном случае Вы хотели сказать о М-профиле архитектуры, например, а не о всех современных ядрах от ARM (куда, кстати, входят и 64-разрядные процессоры архитектуры ARMv8).

Кстати говоря, из-за параллельного существования версий архитектуры и названий ядер путаница возникала и раньше. Например, очень популярное ядро ARM7TDMI-S соответствует архитектуре ARMv4T, но ей же соответствует ещё несколько ядер, обозначений коих я не помню.

Разница между версией архитектуры (ARMv4T или ARMv7-M, например) и названием ядра (скажем, ARM7TDMI-S и Cortex-M3) заключается в том, что версия архитектуры может быть общей для многих ядер; она показывает, как ядро выглядит с точки зрения программиста (какие есть регистры, какие команды доступны и т.д. т.п.). Имя же ядра обозначает конкретную реализацию "в железе" (ну или на языке описания аппаратуры -- ARMы сделаны на Verilog, например) той или иной архитектуры. Одна и та же архитектура может быть реализована разными способами, отличающимися сложностью и производительностью, но выглядящими одинаково с точки зрения программиста. Особенно хорошо это заметно на персоналках, где используются процессоры архитектуры IA-32 (это её официальное название; x86 -- принятое в народе обозначение), но и в случае с ARMами имеем, вообще говоря, то же самое.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y