Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.401ld[*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 завершает его. Разрешается начинать текстовый сегмент, затем начинать сегмент данных, затем переходить обратно к текстовому сегменту и т. д. |