Netwide Assembler (NASM) — асемблер і дизасемблер для архітектури x86. Може використовуватися для написання 16-,32- і 64-бітних програм. NASM вважається одним із найпопулярніших асемблерів для Linux.
Тип | мова програмування Мова асемблера x86 асемблер і компілятор |
---|---|
Автор | Саймон Тетхем |
Розробник | d |
Платформа | x86 |
Операційна система | кросплатформова програма, Linux, d, Windows, DOS, KolibriOS і Berkeley Software Distribution |
Мова програмування | C[1] |
Ліцензія | d[2], GNU Lesser General Public License і Ліцензія BSD |
Репозиторій | github.com/netwide-assembler/nasm |
Вебсайт | nasm.us |
NASM може працювати на платформах, відмінних від x86, таких як SPARC і PowerPC, проте код він генерує лише для x86 і x86-64.
NASM може компілювати у декілька бінарних форматів, зокрема , , , ELF і Mach-O. NASM також має свій власний бінарний формат під назвою .
Така велика кількість підтримуваних бінарних форматів дозволяє кросс-компіляцію для абсолютної більшості систем на платформі x86. Крім того, NASM може створювати плоскі бінарні файли, що дозволяє написання завантажувальника ОС, образи ROM і фактично будь-яку частину операційної системи.
NASM успішно конкурує зі стандартним в Linux і багатьох інших UNIX-системах асемблером . Вважається, що якість документації у NASM вище, ніж у gas. Крім того, асемблер gas використовує , в той час як NASM використовує варіант традиційного для x86-асемблера синтаксису Intel; Intel-синтаксис використовується всіма асемблерами для Windows, наприклад MASM, TASM, FASM.
Історія
NASM був створений Саймоном Тетгемом спільно з Джуліаном Голом і в наш час[] розвивається невеликою командою розробників на SourceForge.net. Спочатку він був випущений за умовами власної ліцензії, але пізніше вона була замінена на GNU LGPL. Починаючи з версії 2.07 ліцензія замінена на «спрощену BSD» (BSD з 2 пунктів).
Приклади для різних операційних систем
Програма Hello World для операційної системи DOS.
section .text org 0x100 movah, 0x9 movdx, hello int0x21 movax, 0x4c00 int0x21 section .data hello:db 'Hello, world!', 13, 10, '$'
Подібна програма для Microsoft Windows.
global _start extern _MessageBoxA@16 extern _ExitProcess@4 section code use32 class=code _start: pushdword 0 ; UINT uType = MB_OK pushdword title ; LPCSTR lpCaption pushdword banner ; LPCSTR lpText pushdword 0 ; HWND hWnd = NULL call_MessageBoxA@16 pushdword 0 ; UINT uExitCode call_ExitProcess@4 section data use32 class=data banner:db 'Hello, world!', 0 title:db 'Hello', 0
Аналог для Linux.
section .data msg:db"Hello, world!", 10 .len:equ$ - msg section .text global _start _start: moveax, 4 ; write movebx, 1 ; stdout movecx, msg movedx, msg.len int0x80 moveax, 1 ; exit movebx, 0 int0x80
Примітки
- The nasm Open Source Project on Open Hub: Languages Page — 2006.
- http://www.nasm.us/
- 1.1 What Is NASM?. The Netwide Assembler: NASM. Офіційний сайт. Архів оригіналу за 18 лютого 2012. Процитовано 14 липня 2010.
NASM, is an 80x86 and x86-64 assembler
- Ассемблеры для Linux: Сравнение GAS и NASM [ 16 серпня 2011 у Wayback Machine.](рос.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Netwide Assembler NASM asembler i dizasembler dlya arhitekturi x86 Mozhe vikoristovuvatisya dlya napisannya 16 32 i 64 bitnih program NASM vvazhayetsya odnim iz najpopulyarnishih asembleriv dlya Linux NASMTipmova programuvannya Mova asemblera x86 asembler i kompilyatorAvtorSajmon TethemRozrobnikdPlatformax86Operacijna sistemakrosplatformova programa Linux d Windows DOS KolibriOS i Berkeley Software DistributionMova programuvannyaC 1 Licenziyad 2 GNU Lesser General Public License i Licenziya BSDRepozitorijgithub com netwide assembler nasmVebsajtnasm us NASM mozhe pracyuvati na platformah vidminnih vid x86 takih yak SPARC i PowerPC prote kod vin generuye lishe dlya x86 i x86 64 NASM mozhe kompilyuvati u dekilka binarnih formativ zokrema ELF i Mach O NASM takozh maye svij vlasnij binarnij format pid nazvoyu Taka velika kilkist pidtrimuvanih binarnih formativ dozvolyaye kross kompilyaciyu dlya absolyutnoyi bilshosti sistem na platformi x86 Krim togo NASM mozhe stvoryuvati ploski binarni fajli sho dozvolyaye napisannya zavantazhuvalnika OS obrazi ROM i faktichno bud yaku chastinu operacijnoyi sistemi NASM uspishno konkuruye zi standartnim v Linux i bagatoh inshih UNIX sistemah asemblerom Vvazhayetsya sho yakist dokumentaciyi u NASM vishe nizh u gas Krim togo asembler gas vikoristovuye sintaksis AT amp T v toj chas yak NASM vikoristovuye variant tradicijnogo dlya x86 asemblera sintaksisu Intel Intel sintaksis vikoristovuyetsya vsima asemblerami dlya Windows napriklad MASM TASM FASM IstoriyaNASM buv stvorenij Sajmonom Tetgemom spilno z Dzhulianom Golom i v nash chas koli rozvivayetsya nevelikoyu komandoyu rozrobnikiv na SourceForge net Spochatku vin buv vipushenij za umovami vlasnoyi licenziyi ale piznishe vona bula zaminena na GNU LGPL Pochinayuchi z versiyi 2 07 licenziya zaminena na sproshenu BSD BSD z 2 punktiv Prikladi dlya riznih operacijnih sistemPrograma Hello World dlya operacijnoyi sistemi DOS section text org 0x100 mov ah 0x9 mov dx hello int 0x21 mov ax 0x4c00 int 0x21 section data hello db Hello world 13 10 Podibna programa dlya Microsoft Windows global start extern MessageBoxA 16 extern ExitProcess 4 section code use32 class code start push dword 0 UINT uType MB OK push dword title LPCSTR lpCaption push dword banner LPCSTR lpText push dword 0 HWND hWnd NULL call MessageBoxA 16 push dword 0 UINT uExitCode call ExitProcess 4 section data use32 class data banner db Hello world 0 title db Hello 0 Analog dlya Linux section data msg db Hello world 10 len equ msg section text global start start mov eax 4 write mov ebx 1 stdout mov ecx msg mov edx msg len int 0x80 mov eax 1 exit mov ebx 0 int 0x80PrimitkiThe nasm Open Source Project on Open Hub Languages Page 2006 d Track Q124688 http www nasm us 1 1 What Is NASM The Netwide Assembler NASM Oficijnij sajt Arhiv originalu za 18 lyutogo 2012 Procitovano 14 lipnya 2010 NASM is an 80x86 and x86 64 assembler Assemblery dlya Linux Sravnenie GAS i NASM 16 serpnya 2011 u Wayback Machine ros