Содержание
На Рис. 5 представлена структура 32 регистров общего назначения.
Рис. 5. Регистры общего назначения CPU микроконтроллеров AVR
Все регистровые команды обращаются непосредственно к регистрам в течение одного тактового цикла. Исключением являются пять логических и арифметических операций с константами (SBCI, SUBI, CPI и ANDI) и операция ORI между константой и содержимым регистра, и команда непосредственной загрузки константы LDI. Эти команды используют вторую половину регистров регистрового файла — R16..R31.
Самые общие команды SBC, SUB, CP, AND и OR и все прочие операции между двумя регистрами или с одним регистром используют для записи результата регистровый файл.
Как показано на Рис. 5, каждому регистру соответствует адрес памяти данных, отображающий их в первых 32 ячейках пользовательского пространства данных. Хотя они не используются как физические ячейки SRAM, такая организация памяти обеспечивает гибкое обращение к регистрам, поскольку X,Y и Z регистры могут быть использованы для индексации любого регистра в файле.
SRAM данных имеет объем 4 Кбайт и занимает адресное пространство от $0060 до $0FFF.
На Рис. 5 представлена структура 32 регистров общего назначения.
Рис. 5. Регистры общего назначения CPU микроконтроллеров AVR
Все регистровые команды обращаются непосредственно к регистрам в течение одного тактового цикла. Исключением являются пять логических и арифметических операций с константами (SBCI, SUBI, CPI и ANDI) и операция ORI между константой и содержимым регистра, и команда непосредственной загрузки константы LDI. Эти команды используют вторую половину регистров регистрового файла — R16..R31.
Самые общие команды SBC, SUB, CP, AND и OR и все прочие операции между двумя регистрами или с одним регистром используют для записи результата регистровый файл.
Как показано на Рис. 5, каждому регистру соответствует адрес памяти данных, отображающий их в первых 32 ячейках пользовательского пространства данных. Хотя они не используются как физические ячейки SRAM, такая организация памяти обеспечивает гибкое обращение к регистрам, поскольку X,Y и Z регистры могут быть использованы для индексации любого регистра в файле.
SRAM данных имеет объем 4 Кбайт и занимает адресное пространство от $0060 до $0FFF.
Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2017 года составляет 80 000 рублей). Подробнее. |
Регистры общего назначения (РОН) есть в любом процессоре, микропроцессоре и микроконтроллере. Их ещё называют “рабочие регистры”. Эти регистры используются для хранения промежуточных итогов вычислений (также как и внутренняя память).
По сравнению с памятью у РОН есть два основных преимущества:
- Обращение к регистрам выполняется намного быстрее, чем к памяти.
- При обращении к регистрам не нужно указывать адрес (как в случае с памятью).
Файл регистров общего назначения
В документации AVR регистры общего назначения объединены в так называемый файл регистров общего назначения — General Purpose Register File (можно, пожалуй, ещё перевести как “Регистровый файл общего назначения”).
Слово файл перевести с английского можно ещё и как “массив”.
В общем, понимать это нужно именно как некий набор или блок регистров общего назначения, которые используются для различных целей.
В микроконтроллерах серии AVR всего 32 регистра общего назначения. Для использования РОН в программе, каждый такой регистр имеет собственное уникальное имя: от R0 до R31.
Схемы ввода-вывода и размещение регистров в памяти
Массив РОН наилучшим образом приспособлен для для набора команд архитектуры AVR Enhanced RISC. Для того, чтобы достичь необходимой производительности и гибкости, следующие схемы ввода-вывода поддерживаются файлом регистров:
- Один 8-разрядный выходной операнд и один 8-разрядный входной операнд результата.
- Два 8-разрядных выходных операнда и один 8-разрядный входной операнд результата.
- Два 8-разрядных выходных операнда и один 16-разрядный входной операнд результата.
- Один 16-разрядный выходной операнд и один 16-разрядный входной операнд результата.
На рисунке показана структура 32 рабочих регистров общего назначения процессора.
Большинство инструкций, работающих с файлом регистра, имеют прямой доступ ко всем регистрам, и большая часть этих инструкций выполняется за один цикл.
Как показано на рисунке выше, каждый регистр также связан с адресом в памяти данных. Этот адрес отражает размещение регистра непосредственно в первых 32 ячейках пользовательского пространства данных. Хотя эта память физически не находится в SRAM, такая организация памяти обеспечивает большую гибкость доступа к регистрам, потому как указатель регистра X-, Y- и Z- может быть установлен для индексации любого регистра в файле регистров.
Некоторые команды не могут использовать определённые регистры (подробнее об этом в описании набора команд).
Х-регистр, Y-регистр и Z-регистр
Все регистры общего назначения в AVR являются восьми разрядными. Однако шесть последних регистров (R26. R31) имеют некоторые дополнительные функции для их использования в качестве регистров общего назначения. Эти регистры являются 16-битными указателями адреса для косвенной адресации в области памяти данных. Три косвенных адреса регистров Х, Y и Z определены, как показано на рисунке ниже.
В различных режимах адресации эти адресные регистры имеют функции фиксированного смещения, автоматический инкремент и автоматический декремент (более подробно об этом в описании инструкций).
Таким образом, эти регистры могут быть объединены в пары (см. рис. выше) и использоваться для 16-разрядных операций. При этом остаётся возможность чтения каждого регистра пары отдельно.