Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Сборщик для архитектуры Intel x86
Assembler for the Intel x86 architecture
Netwide Assembler (NASM) — это ассемблер и дизассемблер для архитектуры Intel x86. Он может использоваться для написания 16-битных, 32-битных (IA-32) и 64-битных (x86-64) программ. Он считается одним из самых популярных ассемблеров для Linux и процессоров x86. Изначально он был написан Саймоном Татемом при участии Джулиана Холла. По состоянию на 2016 год его поддерживает небольшая команда под руководством Х. Питера Анвина. Это программное обеспечение с открытым исходным кодом, распространяемое по упрощенной (двухпунктной) лицензии BSD.
The Netwide Assembler (NASM) is an assembler and disassembler for the Intel x86 architecture. It can be used to write 16 bit, 32 bit (IA 32) and 64 bit (x86 64) programs. It is considered one of the most popular assemblers for Linux and x86 chips. It was originally written by Simon Tatham with assistance from Julian Hall. as of 2016, it is maintained by a small team led by H. Peter Anvin. It is open source software released under the terms of a simplified (2 clause) BSD license.
Особенности
NASM может выводить несколько бинарных форматов, включая COFF, OMF, a.out, исполняемый и компонуемый формат (ELF), Mach O и бинарный файл (.bin, образ диска, используемый для компиляции операционных систем), хотя позиционно-независимый код поддерживается только для ELF-объектных файлов. У NASM также есть собственный бинарный формат, называемый RDOFF. Разнообразие выходных форматов позволяет адаптировать программы практически к любой x86 операционной системе (ОС). Он также может создавать плоские бинарные файлы, пригодные для записи загрузчиков, образов памяти только для чтения (ROM) и в различных областях разработки ОС. Он также избегает таких возможностей, как автоматическая генерация переопределений сегментов (и связанной с ними директивы ASSUME), используемых MASM и совместимыми ассемблерами. В июле 2009 года, начиная с версии 2.07, NASM был выпущен под упрощенной (двухпунктной) лицензией BSD. Ранее, из-за лицензирования под LGPL, это привело к разработке Yasm, полной переработке под новой лицензией BSD. Yasm предложил поддержку x86-64 раньше, чем NASM. Он также добавил поддержку синтаксиса GNU Assembler.
NASM can output several binary formats, including COFF, OMF, a. out, Executable and Linkable Format (ELF), Mach O and binary file (. bin, binary disk image, used to compile operating systems), though position independent code is supported only for ELF object files. It also has its own binary format called RDOFF. The variety of output formats allows retargeting programs to virtually any x86 operating system (OS). It can also create flat binary files, usable to write boot loaders, read only memory (ROM) images, and in various facets of OS development. It also avoids features such as automatic generation of segment overrides (and the related ASSUME directive) used by MASM and compatible assemblers. In July 2009, as of version 2.07, NASM was released under the Simplified (2 clause) BSD license. Previously, because it was licensed under LGPL, it led to development of Yasm, a complete rewrite of under the New BSD License. Yasm offered support for x86 64 earlier than NASM. It also added support for GNU Assembler syntax.
РДОФФ
Перемещаемый динамический формат объектного файла (RDOFF) используется разработчиками для тестирования целостности возможностей вывода объектных файлов NASM. Он в значительной степени основан на внутренней структуре NASM, по сути представляя собой заголовок, содержащий сериализацию вызовов функций выходного драйвера, за которым следует массив секций, содержащих исполняемый код или данные. Инструменты для работы с этим форматом, включая компоновщик и загрузчик, входят в состав дистрибутива NASM. До выпуска версии 0.90 в октябре 1996 года NASM поддерживал вывод только исполняемых файлов плоского формата (например, файлов DOS COM). В версии 0.90 Саймон Татам добавил поддержку интерфейса вывода объектных файлов и файлов DOS OBJ только для 16-битного кода. Таким образом, NASM не поддерживал 32-битный формат объектов. Чтобы решить эту проблему и в качестве упражнения для изучения интерфейса объектных файлов, разработчик Джулиан Холл создал первую версию RDOFF, которая была выпущена в версии NASM 0.91, обеспечивая возможность пропуска программ записей, формат которых они не распознают, и поддержку нескольких сегментов; RDOFF1 поддерживал только три сегмента: текст, данные и bss (содержащие неинициализированные данные).
Relocatable Dynamic Object File Format (RDOFF) is used by developers to test the integrity of NASM's object file output abilities. It is based heavily on the internal structure of NASM, essentially consisting of a header containing a serialization of the output driver function calls followed by an array of sections containing executable code or data. Tools for using the format, including a linker and loader, are included in the NASM distribution. Until version 0.90 was released in October 1996, NASM supported output of only flat format executable files (e. g., DOS COM files). In version 0.90, Simon Tatham added support for an object file output interface, and for DOS OBJ files for 16 bit code only. NASM thus lacked a 32 bit object format. To address this lack, and as an exercise to learn the object file interface, developer Julian Hall put together the first version of RDOFF, which was released in NASM version 0.91. allowing programs to skip over records whose format they do not recognise, and support for multiple segments; RDOFF1 only supported three segments: text, data and bss (containing uninitialized data).