Регистры
Регистровый файл состоит из 16-ти 32-разрядных регистров.
Регистры R0-R12 - обычные регистры, которые могут использоваться для хранения программных переменных.
У регистров R13-R15 имеются особые функции:
Регистр R13 выступает в роли указателя стека. Данный регистр является альтернативным, что делает возможной работу в двух режимах работы, в каждом из которых используется свое собственное пространство стека. Эта возможность обычно используется операционными системами реального времени (ОСРВ), которые могут выполнять свою "системную" программу в защищенном режиме. У двух стеков имеются собственные наименования: основной стек и стек процесса.
Регистр R14 - регистр связи. Он используется для хранения адреса возврата из подпрограммы. Благодаря нему, обеспечивается быстрый переход к подпрограмме и выход из нее. Если же в программе используется несколько уровней вложений подпрограмм, то компилятор будет автоматически сохранять регистр R14 в стек.
Регистр R15 - счетчик программы; поскольку он является частью регистрового файла, его чтение и обработка может выполняться аналогично любым другим регистрам.
В регистре состояния (статуса) программы(рис. 21.10) хранятся значения полей, влияющих на выполнение команд архитектуры CortexМ:
разряды 31 – 27 - значения признаков выполненной команды обработки;
разряды 26 – 8 - состояние выполнения программы и прерываний;
разряды 7 – 0 - номер процедуры обработки текущего прерывания.
Рис. 21.9.
Доступ к регистру слова состояния программы возможен с помощью двух специальных команд.
Дата добавления: 2015-09-29; просмотров: 827;