Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.400SETHI Ш(М.Ш ! 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. Далее: |