Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Бесплатная консультация юриста по вопросам жкх.

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.401


Таненбаум Э.- Архитектура компьютера. стр.401

ld[*R1+*L0(i)] .ш

Эта команда складывает R1 и младшие 10 бит адреса I (в результате получается полный адрес I), вызывает данное слово из памяти и помещает его в регистр R1. Указанные команды, прямо скажем, не слишком элегантны, однако разработчики SPARC не гнались за красотой. Перед ними была поставлена задача обеспечить высокую скорость исполнения, и они успешно ее решили.

Процессоры семейства Pentium, 680x0 и SPARC позволяют работать с операндами разной длины (размером с байт, слово и длинное слово). Каким образом ассемблер определяет, какова длина операндов? И опять разработчики разных ассемблеров приняли разные решения. В Pentium 4 регистры разной длины имеют разные названия. Так, для перемещения 32-разрядных значений исполь зуется название ЕАХ, для 16-разрядных — АХ, а для 8-разрядных — AL и АН. Разработчики ассемблера Motorola решили прибавлять к каждому коду операции суффикс .L для типа long, .W — для типа word и .В — для типа byte. В SPARC для операндов разной длины используются разные коды операций, например, для загрузки байта, полуслова и слова в 64-разрядный регистр указываются коды операций LDSB, LDSH и LDSW соответственно. Как видите, природа языков совершенно произвольна.

Три ассемблера, которые мы рассматриваем, различаются способом резервирования пространства для данных. Разработчики ассемблера Intel выбрали для этой операции название DD (Define Double — определить двойное слово), поскольку слово процессора 8088 имело длину 8 бит. В Motorola используется аббревиатура DC (Define Constant — определить константу). Разработчики SPARC с самого начала предпочли название .WORD. И снова различия абсолютно случайны.

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

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

Директивы

Ассемблерная программа определяет не только машинные команды, которые нужно выполнять процессору, но и команды, которые нужно выполнять самому ассемблеру (например, выделить немного памяти или выдать новую страницу листинга). Команды для ассемблера называются псевдокомандами, или ассемблерными директивами. В листинге 7.1 мы уже встречали типичную псевдокоманду DD. В табл. 7.2 перечислены некоторые другие псевдокоманды (директивы). Они взяты из ассемблера MASM семейства ассемблеров Intel.

Таблица 7.2. Некоторые директивы ассемблера MASM

Директива

SEGMENT

Описание

Начало нового сегмента (текста, данных и т. п.) с определенными

 

атрибутами

ENDS

Завершение текущего сегмента

ALIGN

Управление выравниванием следующей команды или данных

EQU

Определение нового символа, равного данному выражению

DB

Выделение памяти для одного или нескольких байтов

DW

Выделение памяти для одного или нескольких 16-разрядных полуслов

DD

Выделение памяти для одного или нескольких 32-разрядных слов

Директива

Описание

DQ

Выделение памяти для одного или нескольких 64-разрядных двойных слов

PROC

Начало процедуры

ENDP

Завершение процедуры

MACRO

Начало макроса

ENDM

Завершение макроса

PUBLIC

Экспорт имени, определенного в данном модуле

EXTERN

Импорт имени из другого модуля

INCLUDE

Вызов другого файла и включение его в текущий файл

IF

Начало условного ассемблирования программы на основе данного

 

выражения

ELSE

Начало условного ассемблирования программы, если условие для

 

директивы 1Р не выполнено

ENDIF

Завершение условного ассемблирования программы

COMMENT

Определение нового символа начала поля комментариев

PAGE

Принудительный разрыв страницы в листинге

END

Завершение ассемблерной программы

Директива SEGMENT начинает новый сегмент, а директива ENDS завершает его. Разрешается начинать текстовый сегмент, затем начинать сегмент данных, затем переходить обратно к текстовому сегменту и т. д.


⇐ Предыдущая страница| |Следующая страница ⇒

.