NASM ассамблері: Intel x86 архитектурасы үшін құрастырушы және декомпилятор. 16, 32, 64 биттік бағдарламаларға қолдау. Linux және x86 чиптері үшін танымал.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Intel x86 архитектурасы үшін құрастырушы
Assembler for the Intel x86 architecture
Netwide Assembler (NASM) – Intel x86 архитектурасы үшін құрастырушы және декомпилятор. Ол 16 биттік, 32 биттік (IA 32) және 64 биттік (x86 64) бағдарламалар жазу үшін қолданылуы мүмкін. Ол Linux және x86 процессорлары үшін ең көп таралған құрастырушылардың бірі саналады. Оны бастапқыда Саймон Татем, Джулиан Холлдың көмегімен жазған. 2016 жылдан бері оны Х. Питер Анвин басқаратын шағын команда күтіп келеді. Бұл ашық кодты бағдарламалық жасақтама, ол жеңілдетілген (2-тармақты) 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, Executable and Linkable Format (ELF), Mach O және екілік файл (.bin, операциялық жүйелерді құрастыру үшін пайдаланылатын бинарлық дискілік бейне), бірақ позицияға тәуелсіз код тек ELF нысандық файлдары үшін қолдау көрсетіледі. Оның RDOFF деп аталатын жеке бинарлық форматы да бар. Шығыс форматтарының алуан түрлілігі бағдарламаларды дерлік кез келген x86 операциялық жүйеге (ОЖ) қайта бағыттауға мүмкіндік береді. Ол сондай-ақ жүктеу құрылғыларын жазуға, тек оқуға арналған жад (ROM) бейнелерін жасауға және ОЖ әзірлеудің түрлі салаларында пайдалануға болатын жалпақ екілік файлдарды құрай алады. Бұған қоса, MASM және оған үйлесімді құрастырушылар қолданатын сегменттік қайта жазуды автоматты түрде жасау (және осыған байланысты ASSUME директивасын) сияқты мүмкіндіктерден қашады. 2009 жылдың шілдесінде, 2.07 нұсқасынан бастап, NASM жеңілдетілген (екі тармақты) BSD лицензиясымен шығарылды. Алдында, ол LGPL лицензиясымен лицензияланғандықтан, New BSD лицензиясымен толыққандай қайта жазылған Yasm құралының пайда болуына себеп болды. Yasm, NASM-нан бұрын x86 64 архитектурасын қолдады. Ол сонымен қатар 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.
РДОФФ
Relocatable Dynamic Object File Format (RDOFF) – NASM-ның объект файл шығару мүмкіндіктерінің дұрыстығын тексеру үшін әзірлеушілер пайдаланатын формат. Ол NASM-ның ішкі құрылымына көптеп сүйенген, негізінен шығыс драйвер функцияларын шақыру тізбегін қамтитын қабаттан және одан кейін атқарылатын кодты немесе деректерді қамтитын бөлімдер массивінен тұрады. Форматты пайдалану құралдары, оның ішінде байланыстырушы және жүктеуші, NASM тарату жиынтығында бар. 1996 жылдың қазан айында 0.90 нұсқасы шыққанға дейін NASM тек жалпақ форматтағы атқарылатын файлдарды (мысалы, DOS COM файлдары) шығаруды қолдады. 0.90 нұсқасында Саймон Татам объект файл шығару интерфейсін және 16 биттік код үшін ғана DOS OBJ файлдарын қолдауды қосты. Осылайша, 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).