Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
flor_apparato-orientirovnnoe_prog.doc
Скачиваний:
89
Добавлен:
15.06.2014
Размер:
926.72 Кб
Скачать

1.3. Регистры программиста в ia32

Изучение любого вопроса требует конкретной практи­чес­кой базы, позволяющей демонстрировать на ча­стных примерах общие кон­струк­ции и методы, выполнять упражне­ния, а в данном случае также разра­баты­вать и иссле­довать конкретные программы. На момент написа­ния посо­бия на­иболее распространены компьютеры, являющиеся «потомками» компьютеров IBM PC и основанные на процессорах фирмы Intel. Все они используются в режиме 32-бит­ной обработки данных. Соответствующая архитектура для краткости обозначается IA32. Именно она взята в качестве практической базы даль­нейшего изучения программирования на ассемблере.

Полное описание этой архитектуры занимает сотни стра­ниц самого лаконичного текста, поэтому для его деталь­ного изложения следует об­ратиться к учебным пособиям [5-7,19]. Здесь же будет приведена ми­нимальная информация, без ко­торой невозможно дальнейшее изложение частных вопросов системного программирования.

Множество регистров программиста в архитектуре IA32 разделяется на регистры общего назначения, обозначаемые мнемониками EAX, EBX, ECX, EDX, регистры указате­лей и индексов с обозначениями ESI, EDI, EBP, ESP, регистр признаков (флажков) EFlags, ре­гистр указателя команд EIP и сегментные регистры. Все эти регистры, кроме сегментных, 32-бит­ные. Причем все перечисленные регистры, кроме сегментных, могут использоваться и частично, а именно могут применяться только их младшие половины. Эти половины обозначаются, соответственно, AX, BX, CX, DX, SI, DI, BP, SP, Flags, IP. Младшие половины 16-битных регистров общего назначения могут к тому же использоваться по ча­стям - по составляющим байтам. Именно младшие половины этих частей обознача­ются, со­ответственно, AH, BH, CH, DH (от англ. слова High), младшие - AL, BL, CL, DL (от англ. слова Low). Происхож­дение наименования реги­стров восходит к названию их ос­новной программной функции: AX - акку­мулятор (accumulator - накапливающий - основной регистр), BX - базо­вый (base register), CX регистр счетчика (counter), DX - ре­гистр данных (data). (Второй символ наименования в обозначении ре­ги­стров общего назначения заимстовован из английского слова eXtented в связи с тем, что эти регистры исторически явля­ются расширением ре­гистров A, B, C, D архитектуры отдаленного пред­шественника IA32 - микропроцессо­ров I80). Мнемоника DI расшифровывается как Distignation Index (индекс на­значе­ния), SI - Source Index (индекс источника). Регистры BP и SP яв­ляются аббревиа­турой Base Pointer и Stack Pointer, а IP - Instruction Pointer. Заметим, что 16-битная разрядность сегментных регистров сохранена и в архитектуре I32, в которой все остальные регистры обязательно 32-битные.

Отличительной особенностью архитектуры IA32 является специали­зация регистров общего назначения - ситуация, прак­тически не имею­щая аналогов в конкурирующих семей­ствах и связанная с прямой пре­емственностью базового процессора I86 по отношению к процессору I80, а также со стремлением раз­ра­ботчиков аппарату­ры из фирмы Intel в условиях технических ограни­че­ний конца 70-х годов ре­ализовать в нем возможно большее число функций. (Всего в процессоре I8086 было около 29000 транзисторов).

Регистр EAX является наиболее универсальным. Некото­рые операции выполняются только с операндами, находящи­мися в EAX. Предшественник регистра EBX - регистр BX - служил в прежней архитектуре в основном для хранения базового адреса массива или струк­туры дан­ных (относительно начала сегмента), но мог использоваться и для непосредствен­ного хранения операндов, например, при сложе­нии. Регистр ECX наиболее специализирован и во многих случаях изме­няет­ся в результате побочного эффекта при выполнении команд, ма­шинный код которых не содер­жит указания на этот ре­гистр; использу­ется в основном как счетчик в циклах с пара­метром, который по умол­чанию хра­нится в этом регистре. Многие команды в конце своего вы­полнения уменьшают значение этого счетчика (регистра) на 1 или 2. Специализированные функции реги­стров EDI, ESI, EBP и ESP будут описаны позже.

С учетом перспектив неизбежного в будущем перехода на другую архитектуру процессора следует подчеркнуть, что специализация реги­стров скорее исключении, чем правило. Чаще всего в других архитектурах процессоров имелось от 8 до 16 регистров дей­ствительно общего назначения, хотя в ряде ар­хитектур один-два из них зарезервированы за указателем команд и ука­зате­лем стека. Иногда основные регистры делят на две части: ре­гистры данных и адресные регистры, из которых только вто­рые могут исполь­зоваться при построении сложных спосо­бов адресации, а первые - лишь содержать данные.

Соседние файлы в предмете Системное программное обеспечение