Регистр в информатике это

Блок управляющих регистров предназначен для хранения управляющей информации.

Он содержит регистры и счетчики, участвующие в управлении вычислительным процессом, в частности в этот блок входят:

  • — регистры, хранящие информацию о состоянии процессора,
  • — регистры запросов прерывания,
  • — счетчики тактов,
  • — счетчики команд и т д.

Например, счетчик команд служит для определения адреса команды, которую в данный момент времени процессор читает из ОП.

Для линейных участков программы этот адрес вычисляется в счетчике команд путем сложения адреса предыдущей команды, который находится в счетчике с числом, равным количеству байт предыдущей команды.

Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора;

Он используется самим процессором и большой частью недоступен программисту: например, при выборке из памяти очередной команды она помещается в регистр команд (англ.), к которому программист обратиться не может.

Имеются также регистры, которые в принципе программно доступны, но обращение к ним осуществляется из программ операционной системы, например, управляющие регистры и теневые регистры дескрипторов сегментов. Этими регистрами пользуются в основном разработчики операционных систем.

Существуют также так называемые регистры общего назначения (РОН), представляющие собой часть регистров процессора, использующихся без ограничения в арифметических операциях, но имеющие определенные ограничения, например в строковых. РОН, не характерные для эпохи мейнфреймов типа IBM/370[1] стали популярными в микропроцессорах архитектуры X86 — i8085, i8086 и последующих[2].

Специальные регистры[3] содержат данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д.

Часть специальных регистров принадлежит устройству управления, которое управляет процессором путём генерации последовательности микрокоманд.

Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные).

Объём же оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб[4], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80386 и более новых 32 битов * 8 = 256 бит).

Процессор, как любое цифровое устройство, можно рассматривать состоящим из двух блоков: операционного и управляющего.

Процессор работает под управлением программы, находящейся в ОП, которая, в свою очередь, состоит из команд. Процессор читает из ОП одну команду за другой и последовательно их выполняет.

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

Регистры общего назначения

Интервал времени, отводимый на выполнение микрооперации, называется рабочим тактом процессора.

Для реализации команды необходимо на соответствующие управляющие входы операционного блока подать определенным образом распределенную во времени последовательность управляющих сигналов. Каждая микрооперация в АЛУ выполняется под действием своего управляющего сигнала , который поступает в операционный блок в начале соответствующего такта.

Управляющий блок предназначен для выработки этих управляющих сигналов, под действием которых в АЛУ выполняются микрооперации.

Обычно управляющий блок рассматривают как конечный автомат, предназначенный для выработки этих управляющих сигналов, под действием которых в АЛУ выполняются микрооперации.

Регистры микропроцессоров, их виды и назначение

Регистры микропроцессоров 1

Общие сведения.

При составлении программ в первую очередь необходимо

знать, какие из регистров микропроцессора являются программно–доступными регистрами, в которых можно хранить подлежащие обработке данные (операн­ды), адреса и управляющие сигналы (команды). Совокупность программно–до­ступных регистров образуют регистровую модель микропроцессора. Адресация регистровой области процессора и быстрый доступ к ней обеспечивают создание эффективно исполняемых программ.

В регистровой модели современных процессоров обычно выделяют следу­ющие группы регистров:

● регистры, используемые при выполнении прикладных программ. К ним относят:

• основные функциональные регистры (регистры общего назначения; ука­затель команд, или программный счетчик; сегментные регистры; регистр флагов, или слова состояния);

обработки чисел с плавающей точкой (регистры данных, тегов, состояния, управления, регистры–указатели команды и операнда);

обработки пакетов чисел с плавающей точкой (регист­ры пакетов данных и регистр управления–состояния);

● системные регистры (регистры управления режимом, регистры системных адресов, регистры отладки);

● служебные (модельно–специфические) регистры, которые используются в про­цессе отладки систем, содержат информацию о процессе выполнения про­граммы (число декодированных команд, полученных запросов прерывания, число загрузок в кэш–память и т. п.), обеспечивают различные режимы рабо­ты кэш–памяти при обращении к определенным областям основной памяти

О неоднородности регистров.

Регистровая область памяти микропроцессора (

— регистровый сегмент) представляет собой набор неоднородных по возможности доступа и по выполняемым функциям регистров. Например, в рас­смотренном выше 8–разрядном процессоре:

● регистр команд является неадресуемым регистром и предназначен только для приема первого байта (кода команды) из памяти;

● адресуемые регистры В и С могут быть использованы для хранения одного байта данных или 16–разрядного адреса (в паре);

● указатель стека, представляющий собой 16–разрядный регистр, использует­ся для доступа к стеку путем явной и неявной (с помощью специальных ко­манд

● программный счетчик, или указатель команд, выполняет строго определен­ные функции и не может быть использован для хранения 16–разрядных опе­рандов.

Функциональная неоднородность области

процессора проявляется в специализации регистров. В зависимости от выполняемых функций можно вы­делить три группы регистров:

● регистры данных, используемые в операциях АЛУ в качестве источника и приемника операндов;

● адресные регистры, или указатели, предназначенные для формирования ад­ресов данных и команд;

● специальные регистры, служащие для индикации текущего состояния про­цессора и управления режимами его работы.

Функциональная специализация затрудняет программирование (из–за необхо­димости учета организации регистров), однако позволяет создать быстро испол­няемую программу с меньшим требуемым объемом памяти для ее хранения.

Регистры обозначаются латинскими буквами, используемыми для символи­ческого кодирования и отражающими назначение регистра.

Среди регистров данных важное место занимает аккуму­лятор А (

), который выполняет функции временного хранения исход­ных операндов и результатов операций арифметическо–логических устройств (АЛУ). Интенсивное использование аккумулятора и связанное с ним большинство команд арифметической и логической обработки операндов способствует сниже­нию загруженности шины данных, упрощению адресации, повышению быстро­действия процессора. В системах команд микропроцессора выделяются опера­ции с аккумулятором. Поэтому ссылка на аккумулятор при адресации, как прави­ло, производится неявно с помощью кода операции. Неявная адресация позволя­ет не указывать в командах месторасположение одного из операндов и (или) результата операции, что уменьшает длину их кода. В составе микропроцессора может быть не один, а два аккумулятора (например, в МС6809). К регистрам данных относятся явно адресуемые рабочие регистры

1, …., используемые как сверхскоростные регистровые ОЗУ.

Рабочие регистры могут использоваться в операциях совместно с аккумулятором. Некоторые из них могут совмещать функцию хранения данных с функцией адресации. Для образования полноразмерного адреса регистры данных объединяются в пары.

В процессорах, предназначенных для работы в реальном времени, могут быть предусмотрены не один, а два или даже четыре (например, в некоторых микро­контроллерах) набора рабочих регистров. Один из регистров резервируется для системных целей или обработки прерываний, а остальные — для прикладных задач пользователя. В каждый момент времени доступен только один набор ра­бочих регистров, выбираемый специальным указателем.

К регистрам данных также относятся рассматриваемые ниже регистры общего назначения, которые совмещают функции хранения данных и адресов.

Среди регистров, на которые возложена функция адре­сации, следует выделить:

), или указатель инструкций–команд (

), хранящий адрес следующей команды выпол­няемой программы. Его разрядность обычно соответствует числу линий ад­ресной шины. При выполнении программы с последовательно возрастающи­ми адресами команд содержимое

увеличивается на 1 или 2 для указания следующего байта или слова. Увеличение содержимого счетчика происходит автоматически сразу после начала выполнения команды. Изменение после­довательной выборки команд из ячеек памяти осуществляется путем загруз­ки программного счетчика адресом требуемой ячейки. Такая ситуация возни­кает, например:

• при выполнении команд условных и безусловных переходов;

• при инициализации микропроцессора путем сброса;

• при обслуживании запросов на прерывание;

используемый для обращений к систем­ному стеку. Стек представляет собой область памяти, предназначенную для хранения адресов возврата и состояний процессора (содержимого регист­ров) при вызове подпрограмм и обслуживании прерываний. Доступ к стеку организован по принципу «последним пришел — первым ушел» (

т. е. в него можно только последовательно добавлять (втал­кивать) или извлекать (выталкивать) элементы данных. Типовой стек, приме­няемый в большинстве процессоров, заполняется в сторону уменьшения ад­ресов.

всегда показывает на последнюю заполненную ячейку, называемую вершиной стека (

Поэтому при операции за­писи (

) в стек элемента данных сначала содержимое указателя

уменьшается на 1 или 2 в зависимости от длины элемента (байт, два байта), формируя адрес ячейки, в которую затем помещается элемент. При операции считывания (

) сначала элемент данных извлекается из стека, после чего содержимое указателя

увеличивается на 1 или 2.

Принцип взаимодействия указателя

рис. 2.4.1

со стеком проиллюстрирован на примере записи в стек и считывания из него четырех однобайтных элементов (рис. 2.4.1, а).

При операциях со стеком значение указателя

непрерывно меняется, поэтому применять его в качестве точки отсчета при доступе к хранящимся в стеке данным вызывает определенные трудности. Поэтому в ряде случаев, например, при хранении в стеке локальных переменных или при обмене па­раметрами между вызываемой и вызывающей процедурой (подпрограммой), используется указатель кадра (

) — специально зарезерви­рованный адресный регистр. Регистр

, указывающий на начало области па­раметров в стеке (рис. 2.4.1, б), принадлежит к классу базовых регистров. В 16–разрядных процессорах указателем кадра служит индексный регистр ВХ;

регистры, предназначенные для хранения адресов обращения к основной па­мяти. Такие регистры, называемые указательными или индексными, позволя­ют сократить размер кода (программы). К ним следует отнести:

• регистры косвенного адреса (

), содержащие непосред­ственно адрес операнда;

), хранящие начальные (базовые) адреса массивов и записей;

• индексные регистры I или X (

), содержимое которых является относи­тельным (смещенным) адресом операнда;

• регистры автоинкрементной и автодекрементной адресации, автоматиче­ски увеличивающие или уменьшающие свое содержимое после выполне­ния операции;

• регистры расширения адресного пространства (до 1М байт).

К специальным регистрам следует отнести регистр флагов (

), или регистр слова состояния программы (

а также ряд регистров, используемых в сопроцессорах и микроконтроллерах.

На регистр флагов возлагается функция хранения признаков. С каждым при­знаком связывается одноразрядная переменная (бит), называемая флагом (флажком). Регистр флагов содержит:

● биты признаков состояния процессора. Обычно эти признаки формируются в АЛУ после выполнения операции и характеризуют ее результат;

● биты управления и системных признаков, которые устанавливаются операци­онной системой (некоторые пользователем) и задают режим процессора при организации ввода–вывода данных, обслуживании прерываний и исключений, решении последовательности вызываемых задач и реализации ряда других процедур.

Упаковка всех флагов в одно слово и хранение в регистре дает возможность их быстрой пересылки в память с последующим восстановлением, например, при обслуживании запросов на прерывание.

Ниже приведены обозначение, название и назначение флагов признаков состояния, а также показан принцип формирования некоторых флагов из отдельных бит

–разрядных операндов вида

, которые могут быть как исходным операндом, так и результатом выполненной операции:

Помощь с написанием учебных работ

Методические пособия от экспертов Автор24

  • Соединение деталей на чертеже
  • Как правильно написать доклад
  • Метод моделирования в курсовой работе
  • Как быстро написать дипломную работу

Помощь в написании студенческой работы

  • Помощь в написании отчета по практике
  • Помощь в написании статей
  • Помощь в написании сочинения
  • Помощь с рефератом

80% учащихся школ и ВУЗов, обратившихся к нам за помощью, повысили уровень знаний и улучшили успеваемость

Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot

Подписаться через qr-код

Telegram Bot

  • Научные статьи
  • Лекторий
  • Методические указания
  • Справочник терминов
  • Статьи от экспертов
  • Отзывы об Автор24
  • Последние статьи
  • Помощь эксперта
  • Справочник рефератов
  • Нейросеть для решения задач
  • Нейросеть для написания реферата
  • Поиск репетитора
  • Для правообладателей
  • Работа для преподавателей
  • Работа для репетиторов
  • Партнерская программа
  • Реклама на сайте

Включи камеру на своем телефоне и наведи на Qr-код.
Кампус Хаб бот откроется на устройстве

Привет! Рады, что конспект лекций оказался полезен

Для копирования текста подпишись на Telegram bot. Удобный поиск по учебным материалам в твоем телефоне

Регистры процессора. Типы регистров, их назначение.

Регистр процессора — блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора; используется самимпроцессором и большей частью недоступен программисту: например, при выборке из памяти очередной команды она помещается в регистркоманд, к которому программист обратиться не может.

Типы регистров, их назначение

Регистры делятся на параллельные, последовательные и параллельно-последовательные

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

их назначение:

По назначению регистры различаются на:

  • аккумулятор — используется для хранения промежуточных результатов арифметических и логических операций и инструкций ввода-вывода;
  • флаговые — хранят признаки результатов арифметических и логических операций;
  • общего назначения — хранят операнды арифметических и логических выражений, индексы и адреса;
  • индексные — хранят индексы исходных и целевых элементов массива;
  • указательные — хранят указатели на специальные области памяти (указатель текущей операции, указатель базы, указатель стека);
  • сегментные — хранят адреса и селекторы сегментов памяти;
  • управляющие — хранят информацию, управляющую состоянием процессора, а также адреса системных таблиц.

Адресация операндов

Как уже упоминалось, внутренние регистры процессора представляют собой сверхоперативную память небольшого размера, которая предназначена для временного хранения служебной информации или данных. Количество регистров в разных процессорах может быть от 6—8 до нескольких десятков. Регистры могут быть универсальными и специализированными. Специализированные регистры, которые присутствуют в большинстве процессоров, — это регистр — счетчик команд , регистр состояния ( PSW ), регистр указателя стека. Остальные регистры процессора могут быть как универсальными, так и специализированными.

Например, в 16-разрядном процессоре Т-11 фирмы DEC было 8 регистров общего назначения (РОН) и один регистр состояния . Все регистры имели по 16 разрядов. Из регистров общего назначения один отводился под счетчик команд , другой — под указатель стека . Все остальные регистры общего назначения полностью взаимозаменяемы, то есть имеют универсальное назначение, могут хранить как данные, так и адреса (указатели), индексы и т.д. Максимально допустимый объем памяти для данного процессора составлял 64 Кбайт ( адрес памяти 16-разрядный).

В 16-разрядном процессоре MC68000 фирмы Motorola было 19 регистров: 16-разрядный регистр состояния , 32-разрядный регистр счетчика команд , 9 регистров адреса (32-разрядных) и 8 регистров данных (32-разрядных). Два регистра адреса отведены под указатели стека. Максимально допустимый объем адресуемой памяти — 16 Мбайт (внешняя шина адреса 24-разрядная). Все 8 регистров данных взаимозаменяемы. 7 регистров адреса – тоже взаимозаменяемы.

В 16-разрядном процессоре Intel 8086, который стал базовым в линии процессоров, используемых в персональных компьютерах, реализован принципиально другой подход. Каждый регистр этого процессора имеет свое особое назначение, и заменять друг друга регистры могут только частично или же не могут вообще. Остановимся на особенностях этого процессора подробнее.

Процессор 8086 имеет 14 регистров разрядностью по 16 бит . Из них четыре регистра ( AX , BX , CX , DX ) — это регистры данных, каждый из которых помимо хранения операндов и результатов операций имеет еще и свое специфическое назначение:

  • регистр AX — умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода);
  • регистр BX — базовый регистр в вычислениях адреса;
  • регистр CX — счетчик циклов;
  • регистр DX — определение адреса ввода/вывода.

Для регистров данных существует возможность раздельного использования обоих байтов (например, для регистра AX они имеют обозначения AL – младший байт и AH — старший байт ).

Следующие четыре внутренних регистра процессора — это сегментные регистры, каждый из которых определяет положение одного из рабочих сегментов (рис. 3.10):

  • регистр CS (Code Segment) соответствует сегменту команд, исполняемых в данный момент;
  • регистр DS (Data Segment) соответствует сегменту данных, с которыми работает процессор;
  • регистр ES (Extra Segment) соответствует дополнительному сегменту данных;
  • регистр SS (Stack Segment) соответствует сегменту стека.

Рис. 3.10. Сегменты команд, данных и стека в памяти.

В принципе, все эти сегменты могут и перекрываться для оптимального использования пространства памяти. Например, если программа занимает только часть сегмента, то сегмент данных может начинаться сразу после завершения работы программы (с точностью 16 байт ), а не после окончания всего сегмента программы.

Следующие пять регистров процессора ( SP — Stack Pointer , BP — Base Pointer , SI — Source Index , DI — Destination Index , IP —Instruction Pointer ) служат указателями (то есть определяют смещение в пределах сегмента). Например, счетчик команд процессора образуется парой регистров CS и IP , а указатель стека — парой регистров SP и SS . Регистры SI , DI используются в строковых операциях, то есть при последовательной обработке нескольких ячеек памяти одной командой.

Последний регистр FLAGS — это регистр состояния процессора ( PSW ). Из его 16 разрядов используются только девять (рис. 3.11): CF ( Carry Flag ) — флаг переноса при арифметических операциях, PF ( Parity Flag ) — флаг четности результата, AF ( Auxiliary Flag ) — флаг дополнительного переноса, ZF (Zero Flag ) — флаг нулевого результата, SF ( Sign Flag ) — флаг знака (совпадает со старшим битом результата), TF ( Trap Flag ) — флаг пошагового режима (используется при отладке), IF (Interrupt-enable Flag ) — флаг разрешения аппаратных прерываний, DF ( Direction Flag ) — флаг направления при строковых операциях, OF ( Overflow Flag ) — флаг переполнения.

Рис. 3.11. Регистр состояния процессора 8086.

Биты регистра состояния устанавливаются или очищаются в зависимости от результата исполнения предыдущей команды и используются некоторыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора (о системе команд процессора будет рассказано в следующем разделе).

Во многих процессорах выделяется специальный регистр , называемый аккумулятором (то есть накопителем). При этом, как правило, только этот регистр -аккумулятор может участвовать во всех операциях, только через него может производиться взаимодействие с устройствами ввода/вывода. Иногда в него же помещается результат любой выполненной команды (в этом случае говорят даже об «аккумуляторной» архитектуре процессора). Например, в процессоре 8086 регистр данных АХ можно считать своеобразным аккумулятором, так как именно он обязательно участвует в командах умножения и деления, а также только через него можно пересылать данные в устройство ввода/вывода и из устройства ввода/вывода. Выделение специального регистра-аккумулятора упрощает структуру процессора и ускоряет пересылки кодов внутри процессора, но в некоторых случаях замедляет работу системы в целом, так как весь поток информации должен пройти через один регистр -аккумулятор. В случае, когда несколько регистров процессора полностью взаимозаменяемы, таких проблем не возникает.

Регистр в вычислительной технике

Сооружения, техника, технологии, материалы

Реги́стр в вычислительной технике , логическое устройство для хранения n-разрядных слов (двоичных чисел) и выполнения преобразований над ними (приём, выдача, сдвиг). Представляет собой упорядоченную последовательность триггеров , число которых соответствует числу разрядов в слове. С каждым регистром обычно связано комбинационное цифровое устройство, с помощью которого обеспечивается выполнение некоторых операций над словами. Регистр процессора – сверхбыстрая память для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных ) или содержащая данные, необходимые для работы процессора (специальный регистр).

Редакция информационных технологий

Опубликовано 6 декабря 2022 г. в 22:39 (GMT+3). Последнее обновление 6 декабря 2022 г. в 22:39 (GMT+3). Связаться с редакцией

Информация

Сооружения, техника, технологии, материалы

Области знаний: Архитектура и устройства ЭВМ

Регистры

Регистром называют последовательностное устройство, выполненное на триггерах того или иного типа. Его основной функцией является хранение данных (информации) в виде N-разрядного двоичного кода. Двоичный код фиксируется на N триггерах. Занесение новых данных в регистр называется операцией записи (записью), вывод данных из регистра – операцией считывания (считыванием). Обмен информацией между регистром и внешними устройствами может происходить в последовательном и (или) параллельном кодах.

По способу записи/считывания данных различают: последовательные, параллельные и комбинированные регистры.

По функциональному признаку регистры разделяют на две большие группы:

  • • регистры хранения, выполняющие только одну – основную функцию;
  • • регистры сдвига, выполняющие, помимо хранения, сдвиг информации вдоль регистра. Среди регистров последней группы выделяют реверсивные регистры, позволяющие сдвигать информацию в обе стороны.

Рассмотрим особенности основных типов регистров, иллюстрируя принципы их построения и работы для N= 4.

Последовательные регистры

В регистрах этого типа запись и считывание выполняются в последовательном коде. В процессе записи данные заносятся в триггеры последовательно во времени бит за битом, при считывании также бит за битом выводятся из регистра. Последовательные регистры имеют один информационный вход X и один выход Y, вход С записи/считывания, вход R начальной установки триггеров регистра в нулевое состояние (сброса). При записи и считывании осуществляются перемещение (сдвиг) информации вдоль регистра. Поэтому последовательные регистры также называют сдвигающими.

Схема 4-разрядного регистра, построенного на D-триггерах с асинхронными /?5-входами, приведена на рис. 3.27, а.

В приведенной схеме RS-входы задействованы для сброса регистра путем подачи на каждый триггер сигналов R = 0, 5 1. =

Правила работы JV-разрядного регистра отражены в табл. 3.10. При этом следует иметь в виду, что п = 1, . JV – 1, выход п = JV – 1 является выходом регистра (рис. 3.27). Особенности основных режимов регистра:

• сброс регистра производится сигналом R = 0, при этом состояние тактового С и информационного X входов

Схема последовательного регистра (а) и состояния входных данных, триггеров регистра и выходных данных в режимах записи/считывания (б)

Рис. 3.27. Схема последовательного регистра (а) и состояния входных данных, триггеров регистра и выходных данных в режимах записи/считывания (б)

может быть любым (Ф = 0 или 1). На выходах всех триггеров устанавливается нулевой сигнал (¾ = Q, = 0);

Регистр в информатике это

Ключевую роль в обработке данных в процессоре играют специальные ячейки, известные как регистры . Регистры в процессоре x86-64 можно разделить на четыре категории: регистры общего назначения, специальные регистры для приложений, сегментные регистры и специальные регистры режима ядра. Здесь нас будут интересовать прежде всего регистры общего назначения (general-purpose registers), которые в основном и используются в приложениях на ассемблере.

Начнем с того, что процессор архитектуры x86 имел восемь 32-битных регистров общего назначения, регистр флагов и указатель инструкций. Регистры общего назначения:

  • EAX (Accumulator): для арифметических операций
  • ECX (Counter): для хранения счетчика цикла
  • EDX (Data): для арифметических операций и операций ввода-вывода
  • EBX (Base): указатель на данные
  • ESP (Stack pointer): указатель на верхушку стека
  • EBP (Base pointer): указатель на базу стека внутри функции
  • ESI (Source index): указатель на источник при операциях с массивом
  • EDI (Destination index): указатель на место назначения в операциях с массивами
  • EIP : указатель адреса следующей инструкции для выполнения
  • EFLAGS : регистр флагов, содержит биты состояния процессора

Можно получить доступ к частям 32-битных регистров с меньшей разрядностью. Например, младшие 16 бит 32-битного регистра EAX обозначаются как AX. К регистру AX можно обращаться как к отдельным байтам, используя имена AH (старший байт) и AL (младший байт).

Регистры процессора Intel x86

В архитектуре х64 эти регистры были расширены до 64 бит, а новые расширенные регистры получили имена, которые начинаются с буквы R , например, RAX , RBX и т.д. Кроме того, были добавлены 8 новых 64-битных регистров R8 — R15

Регистры в архитектуре х64

Для обращения к 32-, 16- и 8-битной части 64-разрядных регистров используются стандартные для архитектуры x86 имена регистров. Для доступа к подрегистрам новых 64-битных регистров R8 — R15 применяется соответствующий суффикс:

  • D : для получения младших 32 бит регистра, например, R11D
  • W : для получения младших 16 бит регистра, например, R11W
  • B : для получения младших 8 бит регистра, например, R11B

Таким образом, в архитектуре x86-64 мы можем использовать следующие регистры общего пользования:

  • Шестнадцать 64-разрядных регистров RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, R8, R9, R10, R11, R12, R13, R14 и R15
  • Шестнадцать 32-разрядных регистров EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, R8D, R9D, R10D, R11D, R12D, R13D, R14D и R15D
  • Шестнадцать 16-разрядных регистров AX, BX, CX, DX, SI, DI, BP, SP, R8W, R9W, R10W, R11W, R12W, R13W, R14W и R15W
  • Шестнадцать 8-разрядных регистров AL, AH, BL, BH, CL, CH, DL, DH, DIL, SIL, BPL, SPL, R8B, R9B, R10B, R11B, R12B, R13B, R14B и R15B

Например, запись в часть 64-битного регистра, например в регистр AL, влияет только на биты этой части. В случае AL загрузка 8-битного значения изменяет младшие 8 битов RAX, оставляя остальные 48 бит без изменений.

Хотя эти регистры и называются общего назначения, но это не значит, что их можно использовать для любых целей. Все регистры x86-64 имеют свое особое назначение, которое ограничивает их использование в определенных контекстах.

Регистр флагов RFLAGS, содержит биты состояния процессора:

Флаг переноса (Carry flag):казывает, был ли при сложении перенос или заимствование при вычитании. Используется в качестве входных данных для инструкций сложения и вычитания.

Флаг четности: устанавливается, если младшие 8 битов результата содержат четное число единиц.

Флаг настройки: указывает, был ли при сложении перенос или заимствование при вычитании младших 4 битов.

Флаг нуля (Zero flag): устанавливается, если результат операции равен нулю

Флаг знака (Sign flag): устанавливается, если результат операции отрицательный.

Флаг прерывания выполнения (Trap flag): используется при одношаговой отладке.

Флаг разрешения прерывания: установка этого бита разрешает аппаратные прерывания.

Флаг направления: контролирует направление обработки. Если не установлен, то порядок от самого младшего до самого старшего адреса. Если установлен, то порядок обратный — от самого старшего до самого младшего адреса.

Флаг переполнения (Overflow flag): если устанавлен, то операция привела к переполнению со знаком.

Уровень привилегий ввода-вывода (I/O privilege level): уровень привилегий текущего выполняемого потока. IOPL 0 — это режим ядра, а 3 — пользовательский режим.

Флаг вложенной задачи (Nested task flag): управляет цепочкой прерываний.

Флаг возобновления (Resume flag): используется для обработки исключений во время отладки.

Флаг режима виртуальной машины 8086: если установлен, режим совместимости с 8086 активен. Этот режим позволяет запускать некоторые приложения MS-DOS в контексте операционной системы в защищенном режиме.

Флаг проверки выравнивания (Alignment check flag): если установлен, проверка выравнивания памяти активна. Например, если установлен флаг AC, сохранение 16-битного значения по нечетному адресу вызывает исключение проверки выравнивания. Процессоры x86 могут выполнять невыровненный доступ к памяти, когда этот флаг не установлен, но количество требуемых командных циклов может увеличиться.

Флаг виртуального прерывания (Virtual interrupt flag): виртуальная версия флага IF в виртуальном режиме 8086..

Флаг ожидания виртуального прерывания: Устанавливается, когда прерывание находится в состоянии ожидания в виртуальном режиме 8086.

Флаг ID: если этот бит установлен, то поддерживается инструкция cpuid. Эта инструкция возвращает идентификатор процессора и информацию о его функциях.

Основными являются флаги переноса, нуля, знака и переполнения, которые называют флагами состояния. Как видно, не все биты из 64-х разрядного регистра флагов имеют назначение. Неуказанные биты не используются.

В дополнение к регистрам общего назначения x86-64 предоставляет регистры специального назначения, в том числе восемь регистров для работы с числами с плавающей точкой, реализованных в модуле x87 с плавающей точкой (floating-point unit или FPU). Intel назвала эти регистры ST0 — ST7. Каждый регистр с плавающей точкой имеет ширину 80 бит. В отличие от регистров общего назначения обычная пользовательская программа не может получить к ним прямой доступ.

Также есть шестнадцать 128-битных регистров XMM (XMM0 — XMM15) и набор инструкций SSE/SSE2. Каждый регистр можно настроить как четыре 32-битных регистра с плавающей точкой; два 64-битных регистра двойной точности с плавающей точкой; или шестнадцать 8-битных, восемь 16-битных, четыре 32-битных, два 64-битных или один 128-битный целочисленный регистр. В более поздних вариантах семейства процессоров x86-64 AMD/Intel удвоили размер регистров до 256 бит каждый (переименовав их в YMM0-YMM15), добавив поддержки восьми 32-битных значений с плавающей точкой или четырех 64-битных значений с плавающей точкой двойной точности. (целочисленные операции по-прежнему ограничивались 128 битами).

Оцените статью
TutShema
Добавить комментарий