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

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


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

В-третьих, компилятор должен либо на выходе производить программу, которая может использоваться ассемблером, либо самостоятельно выполнять ассемблирование. Таким образом, знание языка ассемблера существенно для понимания того, как работает компьютер. И вообще, кто-то ведь должен писать компилятор (и его ассемблер).

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

Формат оператора в ассемблере

Хотя структура ассемблерного оператора отражает структуру соответствующей машинной команды, языки ассемблера для разных машин и разных уровней во многом похожи, что позволяет говорить о языке ассемблера в целом. В листингах 7.1-7.3 показаны фрагменты программ на ассемблерах Pentium 4, Motorola 680x0 и (Ultra)SPARC. Все эти программы выполняют вычисление формулы N = I + J. Во всех трех примерах операторы над пустой строкой выполняют вычисление, а операторы под пустой строкой резервируют память для переменных I, J и N. То есть последние операторы не являются символьными представлениями машинных команд.

Для компьютеров семейства Intel существует несколько ассемблеров, которые отличаются друг от друга синтаксисим. В этой книге мы будем использовать язык ассемблера Microsoft MASM. И хотя мы будем говорить о процессоре

Pentium 4, все сказанное применимо и к процессорам 386, 486, Pentium и Pentium Pro. Для процессора SPARC мы будем использовать ассемблер Sun, а все сказанное применимо и к более ранним 32-разрядным версиям. В книге коды операций и регистры всегда обозначаются прописными буквами, причем не только для ассемблера Pentium 4, как это обычно принято, но и для ассемблера Sun, где по соглашению буквы строчные.

Листинг 7.1. Вычисление выражения N = I + J на ассемблере Pentium 4

FORMULA: MOV ЕАХ,I ; регистр ЕАХ = I

ADD ЕАХ,J ; регистр ЕАХ = I + J

MOV N,ЕАХ ; N = I + J

I DD 3 ; резервирование 4 байт

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

J DD 4 ; резервирование 4 байт

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

N DD 0 ; резервирование 4 байт

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

Листинг 7.2. Вычисление выражения N = I + J на ассемблере Motorola 680x0

FORMULA MOVE.L I,DO ; регистр DO = I

ADD.L J.DO ; регистр DO = I + J

MOVE.L DO.N ; N = I + J

I DC.L 3 ; резервирование 4 байт

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

J DC.L 4 ; резервирование 4 байт

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

N DC.L 0 ; резервирование 4 байт

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

Листинг 7.3. Вычисление выражения N = ! + J на ассемблере SPARC

FORMULA: SETHI ЯНКП.Ш ! Rl = старшие биты адреса I

LD [Ш+ШХ1)].Ш ! Rl = I

SETHI %HI(J),%R2 ! R2 = старшие биты адреса J

LD OT2+£L0(J)].*R2 ! R2 = J

NOP ! ожидаем получения J из памяти

ADD *R1.*R2.*R2 ! R2 = Rl + R2


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

Карта Сайта