40. Регистры общего назначения. Информатика и информационные технологии
40. Регистры общего назначения. Информатика и информационные технологииВикиЧтение
Информатика и информационные технологии
Цветкова А В
Содержание
40. Регистры общего назначения
Все регистры этой группы позволяют обращаться к своим «младшим» частям. Использовать для самостоятельной адресации можно только младшие 16– и 8-битные части этих регистров. Старшие 16 бит этих регистров как самостоятельные объекты недоступны.
Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:
1) eax/ax/ah/al (Accumulator register) – аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;
2) ebx/bx/bh/bl (Base register) – базовый регистр.
3) ecx/cx/ch/cl (Count register) – регистр-счетчик. Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды.
К примеру, команда организации цикла loop, кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx;
4) edx/dx/dh/dl (Data register) – регистр данных.
Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
Следующие два регистра используются для поддержки так называемых цепочечных операций, т. е. операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит:
1) esi/si (Source Index register) – индекс источника. Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике;
2) edi/di (Destination Index register) – индекс приемника (получателя). Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.
В архитектуре микропроцессора на программно-аппаратном уровне поддерживается такая структура данных, как стек. Для работы со стеком в системе команд микропроцессора есть специальные команды, а в программной модели микропроцессора для этого существуют специальные регистры:
1) esp/sp (Stack Pointer register) – регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека.
2) ebp/bp (Base Pointer register) – регистр указателя базы кадра стека. Предназначен для организации произвольного доступа к данным внутри стека.
Использование жесткого закрепления регистров для некоторых команд позволяет более компактно кодировать их машинное представление. Знание этих особенностей позволит при необходимости хотя бы на несколько байт сэкономить память, занимаемую кодом программы.
Данный текст является ознакомительным фрагментом.
Опции общего назначения
Опции общего назначения Конфигурация, устанавливаемая по умолчанию, во многих случаях обеспечивает работоспособность сервера. После инсталляции сервера и его запуска Apache готов предоставить пользователям файлы из каталога по умолчанию (обычно это каталог /home/httpd/html). В
Прописывание в каталогах общего назначения
Прописывание в каталогах общего назначения Каталоги ссылок – это сайты, которые представляют собой базы ссылок на разнообразные интернет-ресурсы с их описаниями (см. раздел «Каталоги сайтов и рубрикаторы»).Каталоги делятся на отраслевые и общего назначения. В первомФункции общего назначения
Функции общего назначения Эта большая группа функций делится на следующие группы:• Функции пользовательского интерфейса и журналирования. • Функции управления дескрипторами.• Функции конфигурирования и инсталляции.• Компоненто-ориентированные функции.• Функции
3. Пользовательские регистры
3. Пользовательские регистры Как следует из названия, пользовательскими регистры называются потому, что программист может использовать их при написании своих программ. К этим регистрам относятся (рис. 2):1) восемь 32-битных регистров, которые могут использоваться
5. Сегментные регистры
5. Сегментные регистры В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs.Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор
ЛЕКЦИЯ № 15. Регистры
ЛЕКЦИЯ № 15. Регистры 1. Системные регистры микропроцессора Само название этих регистров говорит о том, что они выполняют специфические функции в системе. Использование системных регистров жестко регламентировано. Именно они обеспечивают работу защищенного режима. Их
1. Системные регистры микропроцессора
1. Системные регистры микропроцессора Само название этих регистров говорит о том, что они выполняют специфические функции в системе. Использование системных регистров жестко регламентировано. Именно они обеспечивают работу защищенного режима. Их также можно
2. Регистры управления
2. Регистры управления В группу регистров управления входят четыре регистра: cr0, cr1, cr2, cr3. Эти регистры предназначены для общего управления системой. Регистры управления доступны только программам с уровнем привилегий 0.Хотя микропроцессор имеет четыре регистра
4.
Регистры отладки4. Регистры отладки Это очень интересная группа регистров, предназначенных для аппаратной отладки. Средства аппаратной отладки впервые появились в микропроцессоре i486. Аппаратно микропроцессор содержит восемь регистров отладки, но реально из них используются только
9.3.4. Модифицируемые регистры
9.3.4. Модифицируемые регистры Если в качестве побочного эффекта инструкция модифицирует значение одного или нескольких регистров, в функции asm() должна присутствовать четвертая секция. Например, инструкция fucomip меняет регистр кода завершения, обозначаемый как cc. Строки,
2.3.11 Регистры
2.3.11 Регистры Во многих машинных архитектурах можно обращаться к (небольшим) объектам заметно быстрее, когда они помещены в регистр. В идеальном случае компилятор будет сам определять оптимальную стратегию использования всех регистров, доступных на машине, для которой
39.
Пользовательские регистры39. Пользовательские регистры Как следует из названия, пользовательскими регистры называются потому, что программист может использовать их при написании своих программ. К этим регистрам относятся:1) восемь 32-битных регистров, которые могут использоваться
40. Регистры общего назначения
40. Регистры общего назначения Все регистры этой группы позволяют обращаться к своим «младшим» частям. Использовать для самостоятельной адресации можно только младшие 16– и 8-битные части этих регистров. Старшие 16 бит этих регистров как самостоятельные объекты
41. Сегментные регистры
41. Сегментные регистры В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs.Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel.
44. Регистры управления
44. Регистры управления В группу регистров управления входят четыре регистра: cr0, cr1, cr2, cr3. Эти регистры предназначены для общего управления системой. Регистры управления доступны только программам с уровнем привилегий 0.Хотя микропроцессор имеет четыре регистра
46. Регистры отладки
46. Регистры отладки Это очень интересная группа регистров, предназначенных для аппаратной отладки. Средства аппаратной отладки впервые появились в микропроцессоре i486. Аппаратно микропроцессор содержит восемь регистров отладки, но реально из них используются только
2.1.1. Регистры общего назначения | Электротехника
Физические основы электроники7 лет назад
admin
К регистрам общего назначения (РОН) могут непосредственно адресоваться команды программы, поэтому каждый из них имеет собственные символьные наименования: В, С, D, Е, Н, L. Так как в рассматриваемом микропроцессоре шина данных 8-разрядная, все РОН также имеют 8 разрядов. Только программный счетчик и специализированный регистр указателя стека имеют по 16 разрядов. Так как РОН аппаратно выполнены в большой интегральной схеме (БИС) центрального процессора, команды обмена информацией с ними выполняются всего за 2 – 3 машинных такта, и поэтому РОН обладают более высоким быстродействием, чем любая другая память, к которой может обращаться микропроцессор. Иными словами, РОН выполняет функции сверхоперативного запоминающего устройства (СОЗУ).
Особыми свойствами обладают регистры Н и
Не только в регистрах Н и L, но и в других РОН при операциях с адресами может использоваться принцип тандемных пересылок. Суть его состоит в том, что, поскольку адресная шина 16-разрядная, содержимое каждой регистровой пары В и С, D и Е, Н и L рассматривается как одно слово удвоенной разрядности.
Центральный процессор имеет в своем составе также схему инкрементора/декрементора (INC/DEC), которая позволяет при обработке адресов, команд и данных производить увеличение и уменьшение на 1 непосредственно в блоке РОН, освобождая от этого арифметико-логическое устройство (АЛУ). Устройство инкрементор/декрементор, реализованное в виде достаточно простой комбинационной схемы, выполняет операции INC и DEC в процессе межрегистровых пересылок. Использование этой специализированной схемы позволяет реализовать процедуры автоматического приращения при операциях с адресами в счетчиках команд, указателе стека, регистрах косвенного адреса и т. д.
Входящие в состав блока РОН регистры W и Z используются при работе с командами длиной два и три машинных слова (двух- и трехбайтными). Выборка таких команд производится соответственно за два или три машинных цикла, при этом первый байт команды заносится в регистр команд, второй – в регистр W, а третий – в регистр Z.
Вам также может понравиться
Регистры общего назначения – GeeksforGeeks
Регистр служит быстрой памятью для приема, хранения и отправки данных и инструкций, которые сразу же потребуются ЦП. Регистр представляет собой набор триггеров. Однобитовые цифровые данные хранятся с использованием триггеров. Комбинируя множество триггеров, емкость памяти можно увеличить, чтобы вместить огромное количество битов. Мы должны использовать n-битный регистр с n триггерами, если мы хотим хранить n-битное слово.
Ворота управляют потоком информации, т. е. когда и как информация отправляется в регистр, тогда как триггеры хранят двоичную информацию.
Работа с регистрами:
Когда мы предоставляем системе ввод, этот ввод сохраняется в регистрах, и когда система возвращает результаты после обработки, эти результаты также извлекаются из регистров. чтобы ЦП мог использовать их для обработки данных, которые предоставляет пользователь.
Регистры выполняются на основе трех операций:
- Выборка: Операция выборки используется для извлечения предоставленных пользователем инструкций, которые были сохранены в основной памяти. Регистры используются для получения этих инструкций.
- Декодирование: Операция декодирования используется для интерпретации инструкций, что означает, что ЦП будет определять, какая операция должна быть выполнена над инструкциями после того, как инструкции будут декодированы.
- Выполнение: Процессор управляет операцией выполнения. Результаты, генерируемые ЦП, затем сохраняются в памяти, прежде чем они будут представлены на экране пользователя.
- Регистры состояния и контроля.
- Регистры данных общего назначения.
- Журнал специального назначения.
Регистры состояния и управления сообщают и позволяют изменять состояние процессора и выполняемой программы.
Регистры данных общего назначения:
Регистры общего назначения — это дополнительные регистры, которые присутствуют в ЦП и используются каждый раз, когда требуются данные или место в памяти. Эти регистры используются для хранения операндов и указателей. Они в основном используются для хранения следующего:
- Операнды для логических и арифметических операций
- Операнды для вычисления адреса
- Указатели памяти
Существует 3 типа регистров данных общего назначения:
Регистры данных: 900 10 регистров данных состоят из четырех 32-разрядных регистры данных, которые используются для арифметических, логических и других операций. Регистры данных снова подразделяются на 4 типа:
- AX: Это известно как регистр-накопитель. Его 16 бит разделены на два 8-битных регистра, AH и AL, что позволяет ему также выполнять 8-битные инструкции. В микропроцессорах 8086 он используется в арифметических, логических инструкциях и инструкциях по передаче данных. Одно из чисел, участвующих в манипулировании и делении, должно быть в формате AX или AL.
- BX: Это называется базовым регистром. Он имеет 16 бит и разделен на два регистра по 8 бит в каждом, BH и BL. Регистр адреса — это регистр BX. Обычно он включает указатель данных для косвенной адресации, основанной на адресации, на основе индексации или на основе регистра.
- CX: Это известно как регистр счетчика. Его 16 бит разделены на два 8-битных регистра, CH и CL, что позволяет ему также выполнять 8-битные инструкции. Это действует как счетчик циклов. Это облегчает разработку программных циклов. Инструкции сдвига/поворота и манипулирование строками позволяют использовать регистр счетчика в качестве счетчика.
- DX: Это известно как регистр данных. Его 16 бит разделены на два 8-битных регистра, DH и DL, так что он также может выполнять 8-битные инструкции. В операциях ввода-вывода регистр данных может использоваться как номер порта. Он также применяется к делению и умножению.
Регистры указателей: Регистры указателей состоят из 16-битных левых секций (SP и BP) и 32-битных регистров ESP и EBP.
- SP: Это известно как указатель стека, используемый для указания стека программы. Для доступа к сегменту стека он работает с SS. Он имеет 16-битный размер. Он обозначает элемент наверху стека. Указатель стека будет (FFFE)H, если стек пуст. Сегмент стека определяется относительно его адреса смещения.
- BP: Это известно как базовый указатель, используемый для указания данных в сегментах стека. Мы можем использовать BP для доступа к данным в других сегментах, в отличие от SP. Он имеет 16-битный размер. В основном это служит способом доступа к параметрам, заданным через стек. Сегмент стека определяется относительно его адреса смещения.
Индексные регистры: 16-битные крайние правые биты 32-битных индексных регистров ESI и EDI. SI и DI иногда используются дополнительно, а иногда и при вычитании, а также для индексированной адресации.
- SI: Этот индексный регистр источника используется для идентификации адресов памяти в сегменте данных, к которому обращается DS. Следовательно, доступ к последовательным ячейкам памяти, когда мы увеличиваем содержимое SI, становится простым. Он имеет 16-битный размер. Относительно сегмента данных он имеет смещение.
- DI: Функция этого индексного регистра назначения идентична функции SI. Строковые операции — это подкласс инструкций, использующих DI для доступа к адресам памяти, указанным в ES. Обычно он используется в качестве индекса назначения для строковых операций.
Для хранения данных о состоянии машины и изменения конфигурации состояния используются регистры специального назначения. Другими словами, это также определяется тем, что ЦП имеет ряд регистров, которые используются для выполнения инструкций. Эти регистры называются регистрами специального назначения. Регистры специального назначения бывают 8 типов: cs, ds, ss, es, fs и gs. Регистры относятся к сегментным регистрам. Эти регистры содержат до шести селекторов сегментов.
- CS (регистр сегмента кода): 16-разрядный регистр, называемый сегментом кода (CS), содержит адрес раздела размером 64 КБ вместе с инструкциями ЦП. Все обращения к инструкциям, на которые ссылается регистр указателя инструкций (IP), выполняются ЦП с использованием сегмента CS. Прямые изменения в регистрации CS невозможны. При использовании инструкций дальнего перехода, дальнего вызова и дальнего возврата регистр CS автоматически обновляется.
- DS (регистр сегмента данных): Сегмент программных данных размером 64 КБ адресуется с использованием 16-битного регистра, называемого сегментом данных. Процессор по умолчанию считает, что сегмент данных содержит всю информацию, на которую ссылаются регистры общего назначения (AX, BX, CX и DX) и индексные регистры (SI, DI). Команды POP и LDS можно использовать для прямого изменения регистра DS.
- SS (регистр сегмента стека): 16-разрядный регистр, называемый сегментом стека, содержит адрес сегмента размером 64 КБ с программным стеком. ЦП по умолчанию считает, что сегмент стека содержит всю информацию, на которую ссылаются регистры указателя стека (SP) и базового указателя (BP). Инструкция POP позволяет напрямую изменять регистр SS.
- ES (регистр дополнительного сегмента): 16-разрядный регистр, называемый дополнительным сегментом, содержит адрес сегмента размером 64 КБ, обычно содержащего программные данные. В инструкциях по работе со строками ЦП по умолчанию предполагает, что регистр DI ссылается на сегмент ES. Команды POP и LES можно использовать для непосредственного обновления регистра ES.
- FS (регистр файловых сегментов): регистры FS не имеют назначения, заранее определенного ЦП; вместо этого ОС, которая их запускает, дает им цель. В процессах Windows FS используется для указания на блок информации о потоке (TIB).
- GS (регистр графического сегмента): Регистр GS используется в 64-разрядной версии Windows для указания на структуры, определенные операционной системой. Ядра ОС часто используют GS для доступа к памяти конкретного потока. Регистр GS используется Windows для управления памятью конкретного потока. Для доступа к памяти ЦП ядро Linux использует GS. Указатель на локальное хранилище потока или TLS часто используется в качестве GS.
- IP (регистр указателя инструкций): Регистры CS и IP используются 8086 для доступа к инструкциям. Номер сегмента следующей инструкции сохраняется в регистре CS, а смещение сохраняется в регистре IP. Каждый раз, когда выполняется инструкция, IP изменяется, чтобы указать на предстоящую инструкцию. IP не может быть напрямую изменен командой, в отличие от других регистров; инструкция может не иметь IP в качестве операнда.
- Регистр флагов: Регистр состояния процессора x86 содержит его текущее состояние и называется регистром FLAGS. Размер и значение флаговых битов варьируются в зависимости от архитектуры. Он часто включает информацию о текущих ограничениях работы процессора, а также результаты математических операций. Некоторые из этих ограничений могут запрещать выполнение определенного класса «привилегированных» инструкций и предотвращать срабатывание некоторых прерываний. Другие флаги состояния могут переопределять отображение памяти и указывать реакцию ЦП в случае арифметического переполнения.
сборка. Почему первые четыре регистра общего назначения x86 названы в таком неинтуитивном порядке?
@davidbak предлагает возможную мотивацию физической реализации для выбора дизайна:
В то время, когда мы говорим, ребята, пишущие набор инструкций, будут отдавать приоритет минимальному количеству вентилей, а затем минимальной глубине/задержке вентилей почти всему остальному, я думаю.
BX
— единственный из ACDB, который можно использовать в 16-битном режиме адресации:
[ (BX|BP) + (DI|SI) + (0 | disp8 | disp16) ]
, где любой из 3 компонентов является необязательным.
BX
также является единственным регистром 16-битного режима адресации, который имеет младшую/высокую половину. Так что, возможно, в 8086 он физически находился на границе между разделенными младшими/старшими регистрами и адресными регистрами, которые должен был читать AGU.
А может быть, и нет: 8086 ModR/M и коды операций были разработаны Стивеном Морсом, прежде всего программистом, до аппаратного обеспечения. Мы не можем знать, рассматривал ли он преимущество компоновки HW, или считал это логической причиной, или это просто хорошо сработало для дизайна HW, или, может быть, я далеко от базы, и это даже не полезно для реализация аппаратного обеспечения.
(не по теме: low-8 других регистров) В x86-64 префикс REX меняет значение с AH/CH/DH/BH на SPL/BPL/SIL/DIL в указанном порядке (Intel manual vol. 2, Приложение Б.1.4.2, Таблица Б-5). В 16/32-битных режимах 16-битный размер операнда был наименьшим для SP/ESP и других регистров, отличных от X. (Более унифицированные регистры помогают компиляторам, за исключением того, что компиляторы иногда теряют префикс REX, выбирая регистр, которому он нужен для доступа к младшему компоненту 8.)
pusha
/ popa
порядок тоже совпадает, и хотя это интересно, внутренняя реализация, вероятно, использует счетчик и выполняет ту же логику выборки по индексу, что и явные регистровые операнды. Таким образом, он не добавляет новую информацию о том, что pusha
идет в порядке кодировки.
Имеет смысл, чтобы физическая структура файла регистров соответствовала кодировке номеров регистров, чтобы упростить логику декодирования. Я просмотрел кодировки режима адресации, чтобы увидеть, есть ли там похожий шаблон. (Я не смотрел диаграммы вентилей 8086, но, возможно, AGU выбирает непосредственно из последних 4 регистров в файле регистров, не проходя через полную индексацию, которая может выбрать любой из 8. )
Это усложняется тем фактом, что 16-битный не имеет байта SIB, поэтому режимы base и base+index используют одно и то же 3-битное поле R/M в байте ModR/M.
Руководство Intel x86, том 2, 2.1.5 Кодирование в режиме адресации байтов ModR/M и SIB, Таблица 2-1. 16-битные формы адресации с байтом ModR/M
Эффективный адрес | Поле Р/М | (добавлено): /r кодировка [БХ+СИ] 000 [БХ+ДВ] 001 [БП+СИ] 010 [БП+ДИ] 011 [СИ] 100 | СИ=110 [ДИ] 101 | ДВ=111 disp16 (без базы) 110 | (АД=101) [БХ] 111 | БХ=011
Таким образом, только BX находится на противоположном конце от BX+SI и BX+DI, но он находится на расстоянии одного круга от того, чтобы быть смежным с двумя другими кодами, которые включают BX. Когда задействованы SI и DI, бит0=0 означает SI, бит0=1 означает DI.
Если есть и базовый, и индексный регистры (бит2=0), то бит1=0 означает BX, бит1=1 означает BP. Так что, возможно, это согласуется с тем, что BX находится раньше в физической структуре файла регистров (меньшие числа для доступа к нему). Но поля R/M явно нуждаются в значительном декодировании, прежде чем они превратятся в выборку регистра.
Тем не менее, я считаю правдоподобным, что AGU в 8086 имеет “черный ход” в регистровый файл, который может выбирать только из последних 4 регистров (в /r поле
и pusha
порядок кодирования). Обратите внимание, что 8086 использует сумматор в своем обычном АЛУ для вычисления адресов, но аппаратное обеспечение декодирования режима адресации может использовать другие пути для получения входных данных для вычислений адреса АЛУ. (Полностью предположение; конечно, возможно, что он просто декодирует эти режимы адресации в обычные 3-битные коды регистров и управляет обычным ALU по обычным путям выборки регистров.)
В 32/64-битных режимах адресации кодировка соответствует обычной кодировке регистров, поэтому предположительно (в ЦП без переименования регистров вне порядка/переименования, например 80386) AGU может получить доступ к файлу регистров с теми же 3- битовый адрес как АЛУ.