Кіріспе

Intel x86 архитектурасы үшін құрастырушы

Netwide Assembler (NASM) – Intel x86 архитектурасы үшін құрастырушы және декомпилятор. Ол 16 биттік, 32 биттік (IA 32) және 64 биттік (x86 64) бағдарламалар жазу үшін қолданылуы мүмкін. Ол Linux және x86 процессорлары үшін ең көп таралған құрастырушылардың бірі саналады. Оны бастапқыда Саймон Татем, Джулиан Холлдың көмегімен жазған. 2016 жылдан бері оны Х. Питер Анвин басқаратын шағын команда күтіп келеді. Бұл ашық кодты бағдарламалық жасақтама, ол жеңілдетілген (2-тармақты) BSD лицензиясының шарттарымен таратылады.

Ерекшеліктері

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 синтаксисіне де қолдау қосты.

РДОФФ

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 (бастамаланбаған деректерді қамтиды).