Чтение онлайн

на главную - закладки

Жанры

Ассемблер для процессоров Intel Pentium

Магда Юрий

Шрифт:

Аппаратно микроархитектура NetBurst реализована в виде быстродействующей (400 МГц) системной шины, обладающей впечатляющими возможностями по обработке данных:

– производительность операций – до 3,2 Гбайт/с, что более чем в 3 раза превышает производительность Pentium III;

– тактовая частота шины – 100 МГц с возможностью учетверения скорости (400 МГц);

– высокая степень конвейеризации транзакций;

– возможность доступа к 128-разрядным данным посредством 64-разрядных элементов;

– совместимость с существующим программным обеспечением и операционными системами, разработанными для архитектуры IA-32.

Глава 2
Основы создания приложений на языке ассемблера

Материал этой главы посвящен основам создания программ на языке ассемблера, известном также как язык символического кодирования. Язык ассемблера является одним из самых сложных, поскольку требует знания аппаратно-программной архитектуры процессора и особенностей его функционирования. Сложная внутренняя структура, разнообразные форматы команд, многочисленные режимы адресации процессоров Intel x86 ограничивают возможности разработки сложных и объемных программ на языке ассемблера.

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

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

– MASM является наиболее популярной средой программирования на ассемблере;

– последние версии макроассемблера MASM (7.10.хххх) позволяют работать с мультимедийными расширениями (SIMD), которые поддерживаются последними поколениями процессоров. Это является очень важным фактором, поскольку очень мало компиляторов ассемблера поддерживают эти технологии;

– соглашения и форматы файлов, принятые в MASM, поддерживаются большинством компиляторов языка ассемблера;

– стандарты и соглашения, принятые в MASM, полностью совместимы с теми, что приняты в наиболее популярных средах разработки (Microsoft Visual C++ .NET и Borland Delphi 2005). Это свойство позволяет включать скомпилированные макроассемблером объектные файлы в программы, разработанные на языках высокого уровня.

Популярный компилятор TASM, к сожалению, более не поддерживается, и его развитие закончилось несколько лет назад. Серьезным недостатком этого компилятора при всей его привлекательности является невозможность работы с современными архитектурами процессоров Intel, поддерживающими технологии параллельной обработки данных (SIMD).

Хочу уточнить, что мы будем создавать и анализировать программы и процедуры с использованием компилятора ассемблера версий не ниже 6.14.хххх, а при рассмотрении технологий SIMD —не ниже 7.10.хххх. Очень удобен для этих целей свободно распространяемый пакет программ MASM32, содержащий помимо компилятора версии 6.14 также редактор исходных текстов и несколько полезных утилит. На момент написания книги текущей версией MASM32 является 8.2.

Рассмотрим более подробно процесс ассемблирования программ с помощью макроассемблера MASM. Должен заметить, что ассемблирование программ практически не различается для версий 6.14.хххх и выше.

Пакет MASM фирмы Microsoft включает в себя основные программы, необходимые для создания, отладки и сопровождения программ на языке ассемблера. Процесс создания и выполнения программ на языке ассемблера состоит из двух шагов:

1. Ассемблирование (assembling) исходного текста программы в объектный файл. Файл, содержащий исходный текст программы на ассемблере, имеет расширение ASM, a получаемый в результате ассемблирования объектный файл – расширение OBJ.

2. Компоновка полученного объектного файла вместе с другими объектными файлами и/или библиотеками в исполняемый файл (с расширением ЕХЕ).

Ассемблирование исходного текста выполняет утилита ml.exe, входящая в состав макроассемблера, а сборку всей программы – утилита link.exe. Эти утилиты могут как выполняться из командной строки, так и включаться в состав программных сценариев. Как ml, так и link принимают множество параметров, часть из которых рассматривается далее.

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

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

Проанализируем более подробно каждый из этапов создания программ на языке ассемблера.

2.1. Ассемблирование исходного текста

Программа ml.exe выполняет два последовательных действия при создании исполняемого файла программы. Во-первых, она обеспечивает трансляцию исходного текста программы в промежуточный объектный файл. Во-вторых, ml.exe вызывает программу link.exe, которая компонует объектные файлы и библиотеки в единую выполняемую программу.

В процессе трансляции исходного текста программы выполняются следующие действия:

1. Анализируются директивы условного ассемблирования, и в случае истинности указанных в них условий выполняются те или иные шаги.

2. Разворачиваются макросы.

3. Вычисляются константные выражения, такие, например, как mydata and 10h, при этом выражения замещаются вычисленными значениями.

4. Декодируются команды и операнды, не находящиеся в памяти. Например, на этом шаге будет декодирована команда mov AX, 10, поскольку она не имеет операндов, расположенных в памяти.

5. Сохраняются смещения переменных в памяти как смещения относительно сегментов, в которых эти переменные расположены.

6. Сегменты и их атрибуты размещаются в объектном файле.

7. В объектном файле сохраняются перемещаемые адреса (relocatable addresses).

8. При необходимости создается файл листинга.

9. Непосредственно программе link.exe передаются некоторые директивы (например, INCLUDELIB и D0SSEG).

Директивы условного ассемблирования более подробно описаны в руководстве по макроассемблеру MASM 6.14 фирмы Microsoft.

Поделиться:
Популярные книги

Двойник Короля 6

Скабер Артемий
6. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 6

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Искатель 6

Шиленко Сергей
6. Валинор
Фантастика:
рпг
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Искатель 6

Золото Советского Союза: назад в 1975. Книга 2

Майоров Сергей
2. Золото Советского Союза
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Золото Советского Союза: назад в 1975. Книга 2

Я Гордый Часть 3

Машуков Тимур
3. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый Часть 3

Древесный маг Орловского княжества 3

Павлов Игорь Васильевич
3. Орловское княжество
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Древесный маг Орловского княжества 3

На обочине 40 плюс. Кляча не для принца

Трофимова Любовь
Проза:
современная проза
5.00
рейтинг книги
На обочине 40 плюс. Кляча не для принца

Запрети любить

Джейн Анна
1. Навсегда в моем сердце
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Запрети любить

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VI

Локки 5. Потомок бога

Решетов Евгений Валерьевич
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Локки 5. Потомок бога

Идеальный мир для Демонолога 5

Сапфир Олег
5. Демонолог
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Демонолога 5

Глэрд VIII: Базис 2

Владимиров Денис
8. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Глэрд VIII: Базис 2

Проводник

Кораблев Родион
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Проводник

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18