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

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

Жанры

Ассемблер для процессоров 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.

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

Изгой

Майерс Александр
2. Династия
Фантастика:
фэнтези
попаданцы
рпг
аниме
5.00
рейтинг книги
Изгой

Булгаков

Соколов Борис Вадимович
Документальная литература:
публицистика
5.00
рейтинг книги
Булгаков

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Темный мир

Алмазов Игорь
6. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Темный мир

На границе империй. Том 7. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 7. Часть 4

Бояръ-Аниме. Газлайтер. Том 33

Володин Григорий Григорьевич
33. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 33

Третий. Том 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 3

Старый, но крепкий

Крынов Макс
1. Культивация без насилия
Фантастика:
рпг
уся
попаданцы
5.00
рейтинг книги
Старый, но крепкий

#Бояръ-Аниме. Газлайтер. Том 36

Володин Григорий Григорьевич
36. История Телепата
Фантастика:
боевая фантастика
аниме
фэнтези
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 36

Гримуар темного лорда VI

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

Лицеист

Горъ Василий
3. Школяр
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
Лицеист

Эволюция мага

Лисина Александра
2. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эволюция мага

Сотник

Вязовский Алексей
2. Индийский поход
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сотник

Имя нам Легион. Том 14

Дорничев Дмитрий
14. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
фантастика: прочее
5.00
рейтинг книги
Имя нам Легион. Том 14