Для чего нужны регистры? Приняла: Смагулова К. К. Выполнила: студент группы РЭТ 13-1 Муратова А. К. Министерство образования и науки Республики Казахстан Карагандинский Государственный Технический университет
Содержание Что такое регистр? Классификация регистров Регистры, доступные пользователю Регистр стека Управляющие регистры процессора и регистры состояния Назначение регистров Заключение Список использованной литературы
Что такое регистр? Регистры процессора - это ячейки сверхбыстрой оперативной памяти, которые предназначены для временного хранения промежуточных данных. Различные регистры содержат информацию в различном виде: адреса и указатели сегментов памяти или системных таблиц, индексы элементов массива и пр. В процессоре находится большое количество регистров, которые можно разделить на несколько основных групп: аккумуляторы, флаги, указатели, индексные, сегментные и регистры управления. Любой регистр процессора это цифровая электронная схема, содержащая последовательность двоичных чисел различной разрядности (16, 32 или 64) и результаты выполнения преобразований между ними. По типу приема и передачи информации могут быть последовательными (сдвиговыми) и параллельными.
Классификация регистров В процессоре имеется набор регистров, представляющих собой область памяти быстрого доступа, но намного меньшей емкости, чем основная память. Регистры процессора по функции делятся на две группы: Регистры, доступные пользователю. Регистры управления и регистры состояния.
Регистры, доступные пользователю Эти регистры позволяют программисту сократить число обращений к основной памяти, оптимизируя использование регистров с помощью машинного языка или ассемблера. В состав языков высокого уровня входят оптимизирующие компиляторы, построенные на алгоритмах, которые, в частности, позволяют определить, какие переменные следует заносить в регистры, а какие в основную память. Некоторые языки высокого уровня, такие, как С, предоставляют программисту возможность предложить компилятору хранить те или иные данные в регистрах. К доступным регистрам пользователь может обращаться с помощью команд машинного языка. К этим регистрам, как правило, имеют доступ все программы как приложения, так и системные. Обычно среди доступных регистров есть регистры данных, адресные регистры и регистры кода условия.
Регистры данных. Программист может применять их в различных целях. В ряде случаев они имеют общее назначение и могут использоваться любой машинной командой для операций с данными. Однако зачастую при этом накладываются определенные ограничения. Например, некоторые регистры предназначены для операций над числами с плавающей точкой, в то время как остальные для хранения целых чисел. Адресные регистры. В них заносятся адреса команд и данных в основной памяти; в этих регистрах может быть записана только часть адреса, использующаяся при вычислении полного или эффективного адреса. Рассмотрим следующие примеры. Индексный регистр. Используется в обычном режиме адресации, когда адрес получается в результате сложения содержимого индексного и базового регистра.
Сегментный регистр. При сегментной адресации память разделяется на блоки (сегменты), состоящие из различного количества машинных слов. Адрес ячейки памяти складывается из адреса сегмента и смещения относительно начала сегмента. Имея представление о таком режиме адресации, легче будет усвоить материал, изложенный в главе 7, "Управление памятью", в которой обсуждаются методы управления памятью. При этом режиме адресации базовый адрес сегмента (его начало) хранится в одном из регистров. Таких регистров может быть несколько; например, один для операционной системы (т.е. использующийся при выполнении процессором кода операционной системы), другие для исполняющихся в данный момент приложений.
Регистр стека Регистр стека. При стековой адресации 1 выделяется специальный регистр, в котором размещен указатель на вершину стека. Этот режим адресации позволяет использовать некоторые команды, в которых отсутствует поле адреса, например push и pop. В некоторых машинах вызов процедуры или подпрограммы приводит к автоматическому сохранению содержимого всех доступных пользователю регистров, чтобы по возвращении их можно было восстановить. Процедура сохранения и восстановления, являющаяся составной частью команды вызова и возврата, выполняется процессором. Такой подход позволяет процедурам использовать регистры независимо друг от друга.
Управляющие регистры процессора и регистры состояния Используются в процессоре для контроля над выполняемыми операциями; с их помощью привилегированные программы операционной системы могут контролировать ход выполнения других программ. Для разделения регистров на эти две категории не существует определенного признака. Конечно, у разных типов машин организация регистров отличается; для их классификации также используется различная терминология. Здесь приводится довольно полный список типов регистров и дается их краткое описание. Кроме ранее упомянутых регистров, MAR, MBR, I/OAR и I/OBR, важными для выполнения команд являются следующие.
Программный счетчик (program counter PC). Содержит адрес команды, которая должна быть выбрана из памяти. Регистр команд (instruction register IR). Содержит последнюю выбранную из памяти команду. В состав всех процессоров входит также регистр (или набор регистров), известный под названием регистра слова состояния программы (program status word PSW). В нем, как правило, содержатся коды условий и другая информация о состоянии, например бит разрешения/запрещения прерываний или бит режима системный/пользовательский.
На устройство и организацию управляющих регистров и регистров состояния влияют несколько факторов. Одним из них является поддержка операционной системы. Различные виды управляющей информации используются операционной системой по-разному. Если разработчик процессора имеет ясное представление об операционной системе, которая будет работать с этим процессором, он сможет так спланировать организацию регистров, чтобы обеспечить аппаратную поддержку ряда возможностей, таких, как защита памяти или переключение пользовательских программ.
Назначения регистров Начиная с модели процессоры Intel предоставляют 16 основных регистров для пользовательских программ и ещё 11 регистров для работы с мультимедийными приложениями (MMX) и числами с плавающей точкой (FPU/NPX). Все команды так или иначе изменяют содержимое регистров. Регистры EAX, EBX, ECX, EDX – это регистры общего назначения. Они имеют определённое назначение (так уж сложилось исторически), однако в них можно хранить любую информацию. Регистры EBP, ESP, ESI, EDI – это также регистры общего назначения. Они имеют уже более конкретное назначение. В них также можно хранить пользовательские данные, но делать это нужно уже более осторожно, чтобы не получить «неожиданный» результат.
Таблица 1 - Основные регистры процессора Название РазрядностьОсновное назначение EAX32Аккумулятор EBX32База ECX32Счётчик EDX32Регистр данных EBP32Указатель базы ESP32Указатель стека ESI32Индекс источника EDI32Индекс приёмника EFLAGS32Регистр флагов EIP32Указатель инструкции (команды) CS16Сегментный регистр DS16Сегментный регистр ES16Сегментный регистр FS16Сегментный регистр GS16Сегментный регистр SS16Сегментный регистр
В целом, каждый регистр процессора по определению служит определённой цели, и используя регистры по назначению, по- видимому, можно улучшить программу, хотя не факт. Вот для чего нужны данные регистры: 1) eax – аккумулятор (для хранения результата действий); 2) ebx – регистр базы; 3) ecx – используется в качестве счётчика (в циклах); 4) edx – регистр данных (подобно eax); 5) esi – индекс источника; 6) edi – индекс приёмника; 7) ebp – регистр базы (используется компилятором); 8) esp – регистр стека (используется компилятором).
Заключение Регистр – это определенный участок памяти внутри самого процессора, от 8 до 32 бит длиной, который используется для промежуточного хранения информации, обрабатываемой процессором. Некоторые регистры содержат только определенную информацию. Регистры общего назначения – EAX, EBX, ECX, EDX. Они 32 битные и делятся еще на две части: нижние, из которых AX,BX,CD,DX -16 битные и делятся еще на два 8 битных регистра. Так AX делится на AH и AL, DX на DH и DL и т. Д.
Список использованной литературы Barbara J. Burian. Программирование на языке ассемблера системы IBM/370 упрощённый подход = A simple approach to S/370 assembly language programming. New York: Prentice-Hall, Inc, Погорелый С. Д., Слободянюк Т. Ф. Программное обеспечение микропроцессорных систем. Справочник. 2-е, переработанное и дополненное. К: Техника, С. 7, с. (Справочник специалиста) экз.