Перевод:
AsmOs
group, © 2001
Оригинал: asmdev.narod.ru
Данное руководство описывает NASM, расширенный ассемблер, предназначенный для написания программ процессоров серии Intel x86, способный в то же время работать на разных платформах.
|
1.1. Что такое NASM? |
1.1.1.
Зачем еще один ассемблер? 1.1.2. Условия лицензирования |
1.2.
Контакты 1.3. Инсталляция |
1.3.1.
Инсталляция NASM под MS-DOS или Windows 1.3.2. Инсталляция NASM под Unix |
|
2.1. Синтаксис командной строки NASM |
2.2. Пользователям MASM: Отличия |
3.1.
Обзор ассемблерной строки NASM 3.2. Псевдо-инструкции |
3.3.
Эффективные адреса 3.4. Константы |
3.4.1.
Числовые константы 3.4.2. Символьные константы 3.4.3. Строковые константы 3.4.4. Константы с плавающей точкой |
3.5. Выражения |
3.6.
SEG и WRT 3.7. Критические выражения 3.8. Локальные метки |
4.1. Однострочные макросы |
4.1.1.
Обычный способ: %define 4.1.2. Однострочные макросы раннего связывания: %xdefine 4.1.3. Отмена определения макроса: %undef 4.1.4. Переменные препроцессора: %assign |
4.2. Многострочные макросы: %macro |
4.3. Условное ассемблирование |
4.4.
Циклы препроцессора: %rep 4.5. Подключение других файлов 4.6. Контекстный стек |
4.7. Стандартные макросы |
5.1.
BITS: Указание разрядности выполняемого кода 5.2. SECTION или SEGMENT: Изменение и описание секций |
5.2.1. Макрос __SECT__ |
5.3.
ABSOLUTE: Определение абсолютных меток 5.4. EXTERN: Импорт символов из других модулей 5.5. GLOBAL: Экспорт символов в другие модули 5.6. COMMON: Определение общих данных |
6.1. bin: Плоский бинарный формат |
6.1.1.
ORG: Начало бинарного файла 6.1.2. bin-расширение директивы SECTION |
6.2. obj: Объектные файлы OMF Microsoft |
6.3. win32: Объектные файлы Win32 Майкрософт |
6.3.1. win32-расширения директивы SECTION |
6.4.
coff: Общий формат объектных файлов 6.5. elf: Объектные файлы ELF Линукс |
6.5.1.
elf-расширения директивы SECTION 6.5.2. Позиционно-независимый код: Специальные символы формата elf и WRT 6.5.3. elf-расширения директивы GLOBAL 6.5.4. elf-расширение директивы COMMON |
6.6.
aout: Объектные файлы a.out Линукс 6.7. aoutb: Объектные файлы a.out NetBSD/FreeBSD/OpenBSD 6.8. as86: Объектные файлы as86 Линукс 6.9. rdf: Перемещаемые динамические объектные файлы |
6.9.1. Требование библиотеки: Директива LIBRARY |
6.10. dbg: Формат для отладки |
7.1. Получение .EXE файлов |
7.1.1.
Использование формата obj для получения .EXE файлов 7.1.2. Использование формата bin для получения .EXE файлов |
7.2. Получение .COM файлов |
7.2.1.
Использование формата bin для получения .COM файлов 7.2.2. Использование формата obj для получения .COM файлов |
7.3.
Получение .SYS файлов 7.4. Взаимодействие с 16-битными C-программами |
7.4.1.
Внешние символьные имена 7.4.2. Модели памяти 7.4.3. Определения и вызовы функций 7.4.4. Доступ к элементам данных 7.4.5. c16.mac: Макросы для 16-битного C-интерфейса |
7.5. Взаимодействие с программами Borland Pascal |
7.5.1.
Соглашение о вызовах в Pascal 7.5.2. Ограничение имен сегментов в Borland Pascal 7.5.3. Использование c16.mac с Pascal-программами |
8.1. Интерфейс с 32-ух битными программами на Си |
8.1.1.
Внешние
символьные имена 8.1.2. Определение и вызов функций 8.1.3. Доступ к переменным 8.1.4. c32.mac: Вспомогательные макросы для 32-ух битного интерфейса с Си |
8.2. Написание разделяемых библиотек для NetBSD/FreeBSD/OpenBSD и Linux/ELF |
9.1. Переходы между сегментами
смешанной разрядности 9.2. Адресация между сегментами различной разрядности 9.3. Другие инструкции смешанного размера |
10.1. Общие проблемы |
10.1.1. Генерация NASM
неэффективного кода 10.1.2. Мои "JUMPы" вне диапазона 10.1.3. ORG не работает 10.1.4. TIMES не работает |
10.2. Дефекты (Ошибки) |