Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория 2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
274.3 Кб
Скачать

Глава3

СистемакомандIA-32

ФорматмашинныхкомандIa-32

НазначениеиинтерпретацияполеймашиннойкомандыОсновыдекодированиямашинныхкомандФункциональнаяклассификациямашинныхкоманд

Системакомандявляетсяважнейшейчастьюархитектурыкомпьюте-

ра,таккаксихпомощьюпроизводитсянепосредственноеуправлениеработойпро-цессора.Кпримеру,системакомандпроцессораPentiumсодержитболее300ма-шинныхкоманд.Споявлениемкаждойновоймоделипроцессораколичествокакправило,возрастает,отражаяархитектурныеновшестваданноймоде-

липосравнениюспредшествующими.

Признакомствессистемоймашинныхкоманднеобходимоучитыватьдваас-пекта—собственнонабормашинныхкомандиправилапредставленияэтихко-манднауровнепроцессора,тоестьформатмашинныхкоманд.Процессорукомпь-ютерапонятентолькоодинязык—языкмашинныхкоманд.Машинныекомандыпредставляютсобойсформированныепоопределеннымправилампоследователь-ностинулейиединиц.Длятогочтобызаставитьпроцессорвыполнитьнекотороедействие,емунужновыдатьсоответствующееуказаниеввидемашиннойкоман-ды,адлявыполненияболеесложнойработыдостаточнонаписатьпрограммувдво-ичныхкодах.Программированиепервыхкомпьютеровосуществлялосьименнотакимспособом.Недостаткипроцессанаписанияпрограммвдвоичномкодеоче-видны.Дляоблегченияпроцессаразработкипрограммбылпридуманязыкассем-блера,каксимволическийаналогмашинногоязыка,авархитектурукомпьютеравведенблокмикропрограммногоуправления.Длякаждоймашиннойкомандыблок

ФорматмашинныхкомандIA-32 59

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

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

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

ФорматмашинныхкомандIa-32

Машиннаякомандапредставляетсобойзакодированноепоопределеннымправи-ламуказаниепроцессорунавыполнениенекоторойоперации.Правилакодирова-ниякомандназываютсяформатомкоманд.КомандыпроцессоровархитектурыIA-32считаютсясложными.МаксимальнаядлинамашиннойкомандыIA-32со-ставляетбайт.Реальнаякомандаможетсодержатьгораздоменьшееколичествополей,вплотьдоодного—толькокодоперации.Приведенныйнарис.форматмашиннойкомандыявляетсянаиболееполным.

Какнауровнеформатамашиннойкомандысоответствуютмеждусобоймашин-ныекомандыикомандыассемблера?Дляпримерарассмотримтипичнуюкоман-дуязыкаассемблера:

ebx,eax

КомандапроизводиткопированиесодержимогорегистраврегистрЕВХ.Соответствующаямашиннаякомандабудетвыглядетьтак:

D8

Значение8В—кодоперации.Ещеодинпримеркомандыecx,128

ДаннаякомандаинициализируетсодержимоерегистраЕСХдесятичнымзначе-ниемСоответствующаямашиннаякомандавыглядиттак:

00000080

Значениеполяскодомоперации—В9.Изпримероввидно,чтопрямогосоот-ветствиямеждуструктуройкомандыассемблераисоответствующеймашиннойкомандойнет.Несмотрянато,чтокомандаассемблераоднаитажекодымашинныхкоманд—разные(8ВиВ9).Большинствокомандассемблераимеютнескольковозможныхвариантовсочетанияоперандов.Какпоказаноприве-денныхпримерах,несмотрянаодинаковыеназваниякомандассемблера,для

60 Глава3.СистемакомандпроцессораIA32

Однобайтовыепрефиксы

Г повторения

|размераадресаразмераоперандазаменысегмента

|блокировкишины

Количествобайтов

код

операции

0или1

байт

index base

!

КОП

i

7

КОП

6 54

3

2

w

1о;

|mod||

|

КОП

w

7

654

3

7

КОП

654

3

sw

КОП

reg

i7

654

3

I

,I

Рис.Формат машиннойкоманды

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

Логическилюбаякомандаязыкаассемблерасодержитнесколькоэлементов.Элемент,описывающий,чтоделать,называетсякодомоперации(КОП).Зна-

чениевполекодаоперациинекоторымобразомопределяетвблокемикропрог-

раммногоуправленияподпрограмму,реализующуюдействиядляданнойко-манды.

вЭлементы,описывающиеобъекты,скоторыминужночто-тоявляют-

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

иЭлементы,описывающие,какявляютсятипамииобычно

задаютсянеявно.Онииспользуютсятрансляторомассемблераприформиро-ваниимашиннойкомандыдляопределениязначенияполякодаоперации.

Этижеэлементыимеетимашиннаякоманда,новзакодированномвиде.Пере-водкомандассемблеравсоответствующиемашинныекомандыосуществляетспе-циальнаяпрограмма—ассемблер,которуюможнотакженазватьтранслятором(компилятором)ассемблера.

Опишемназначенияполеймашиннойкоманды(рис.