Подробнее о новых инструкциях AVR LAC, LAS, LAT и XCH - PullRequest
11 голосов
/ 18 января 2012

Глядя на набор инструкций 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) </p>

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

Ответы [ 2 ]

3 голосов
/ 25 января 2012

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

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

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

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

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

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

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

0 голосов
/ 20 января 2017

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

...