Подробнее о новых инструкциях AVR LAC, LAS, LAT и XCH

Вопрос задан: 8 лет назад Последняя активность: 3 года назад
up 11 down

Глядя на набор инструкций AVR, в 2010 году было добавлено четыре инструкции.

LAC load and clear
LAS load and set
LAT load and toggle
XCH load and exchange
  1. Кто-нибудь знает, какие чипы имеют эти инструкции

  2. Какие инструменты поддерживают эти инструкции

  3. Больше информации о том, что они делают

    (Z) <- Rd v (Z), Rd <- (Z)

означает ли это, что Rd и (Z) получают одинаковое значение или Rd получает предварительно измененное значение того, на что указывал Z?

2 ответа

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 3 down

Они, вероятно, не присутствуют в современных (на первый взгляд) чипах, но у всех есть общая тема - операции с атомарной памятью. Их целью обычно является синхронизация между потоками, а их включение на уровне набора команд, вероятно, указывает на то, что Atmel планирует запустить многоядерный чип AVR. Поскольку они уже определены, поставщики инструментов уже могут добавлять их в ассемблеры, но они не сделают этого, пока чипы не получат инструкции. (Редактировать: Как выясняется, другим ядром является периферийное устройство USB, а не процессор. Спасибо Avakar за эту информацию.)

Поведение, как я читал это из Atmel AVR 8-битная инструкция по эксплуатации:

LAC - Load and Clear, загружает содержимое памяти * Z в регистр Rd и одновременно очищает биты в * Z, которые были установлены в Rd.

LAS - Load And Set одновременно устанавливает биты в ячейке памяти, которые были установлены в регистре, и загружает в регистр предшествующее содержимое ячейки памяти. Например, очень полезно для однобитных мьютексов.

LAT - загрузка и переключение; как LAS, но вместо побитового или, он использует побитовый xor, таким образом переключая биты.

XCH - Обмен; просто обменивается памятью и регистрирует содержимое.

Все они являются инструкциями по доступу к ОЗУ (в справочных состояниях 07/2014 они занимают два цикла), которые объединяют операции, поэтому они также могут создавать код, которому требуется ОЗУ быстрее, чем в настоящее время.

up 0 down

Небольшая, но важная деталь, на которую следует обратить внимание: инструкции LAS, LAC и LAT работают, когда Z указывает только на «реальную» SRAM. Это не регистры (с отображением в памяти) и т.д. Таким образом, на самом деле, они полезны либо для ваших собственных (ОС) данных, либо для модуля XMega USB, никаких других периферийных устройств и модулей.

Это жаль (поскольку это было бы действительно удобно для манипулирования флагами PMIC.CTRL, например), но это действительно не работает. Проверено. Похоже, что LAS, LAC и LAT имеют тот же эффект, что и XCH (обмен между Rd и (Z), но без изменения битов) при применении к отображенным в памяти регистрам.

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском