Статус
нашего
сайта:
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

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


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

SETHI Ш(М.Ш ! Rl = старшие биты адреса N

ST %R2, [Ш+ШК№]

I: .WORD 3 ! резервирование 4 байт

! и их инициализация значением 3

J: .WORD 4 ! резервирование 4 байт

! и их инициализация значением 4

N: .WORD 0 ! резервирование 4 байт

! и их инициализация значением О

Ассемблерные операторы состоят из четырех полей: метки, операции, операндов и комментариев. Метки служат символическими именами для адресов памяти. Они позволяют переходить к командам и данным, позволяя по символическому имени получить доступ к тому месту, где хранятся команды и данные. Если оператор снабжен меткой, то эта метка обычно располагается в начале строки.

В каждом из трех примеров есть метки: FORMULA, I, J и N. Отметим, что в ассемблере SPARC после каждой метки нужно ставить двоеточие, а в ассемблере Motorola — нет. В ассемблере компьютеров Intel двоеточие ставится только

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

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

В каждой машине есть несколько регистров, но названия у них совершенно разные. Регистры Pentium 4 называются ЕАХ, ЕВХ, ЕСХ и т. д., регистры Motorola — DO, Dl, D2, регистры SPARC имеют несколько названий. В этой книге для их обозначения мы будем использовать символы Ш и %R2.

В поле кода операции содержится либо символическая аббревиатура этого кода (если оператор является символическим представлением машинной команды), либо команда самого ассемблера. Выбор имени — дело вкуса, и поэтому разные разработчики называют их по-разному. Разработчики ассемблера Intel решили использовать обозначение M0V и для загрузки регистра из памяти и сохранения регистра в память, разработчики ассемблера Motorola выбрали для обеих операций обозначение MOVE, а разработчики ассемблера SPARC решили использовать символы LD для первой операции и ST для второй. Очевидно, что выбор названий в данном случае никак не связан с архитектурой машины.

Напротив, необходимость указывать две машинные команды для доступа к памяти объясняется архитектурой SPARC, поскольку виртуальные адреса могут быть 32-разрядными (как в SPARC версии 8) и 44-разрядными (как в SPARC версии 9), а команды могут содержать максимум 22 бита данных. Следовательно, чтобы передать все биты полного виртуального адреса, всегда требуются две команды. Например:

sethi шш.та

Эта команда обнуляет старшие 32 бита и младшие 10 бит 64-разрядного регистра R1, а затем помещает старшие 22 бита 32-разрядного адреса переменной I в битовые позиции с 10 по 31 регистра R1. Далее:


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

.