NASM
Материал из Википедии — свободной энциклопедии
NASM (от англ. Netwide Assembler) является бесплатным Intel x86 ассемблером с открытым исходным кодом. Он используется при написании 16-битных и 32-битных программ (IA-32). 32-битные программы могут быть написаны для NASM таким способом, чтобы они были переносимыми между любыми 32-битными x86 операционными системами, если используются правильные библиотеки.
[править] Пример программы (Linux)
Это пример программы Hello world, которая выводит это знаменитое сообщение и завершается.
SECTION .data msg db "Hello, world!",0xa ; len equ $ - msg SECTION .text global main main: mov eax,4 mov ebx,1 mov ecx,msg mov edx,len int 0x80 mov eax,1 mov ebx,0 int 0x80
NASM был создан Саймоном Татамом совместно с Юлианом Холлом, и в настоящее время развивается маленькой командой разработчиков в SourceForge. Первоначально он был выпущен согласно его собственной лицензии, но позже эта лицензия была изменена на GNU LGPL после множества проблем, вызванных выбором лицензии.
NASM производит различные двоичные форматы на любой машине, начиная форматом COFF (и подобного ему PE формата, используемого Microsoft Windows) до a.out elf и родного двоичного формата MINIX (NASM даже определяет свой собственный двоичный формат, RDOFF, который в настоящее время используется только в операционной системе RadiOS). Это позволяет собирать программы на одной x86 операционной системе для другой, по-видимому, в более удобном формате. Кроме того, NASM может создавать 'плоские' бинарные файлы, пригодные к употреблению в написании системных загрузщиков, образов ROM, и различных элементов операционной системы. NASM будет работать даже на не-x86 платформах, таких как Sparc и PowerPC, даже при том, что это не будут программы, пригодные к употреблению на тех машинах.
Философия NASM позволяет программистам, знакомым с ассемблером Intel-а использовать соответствующий подход, который является самым легким для понимания программистов. Поэтому, он использует традиционный Intel-синтаксис для x86 ассемблера (тогда как другие бесплатные ассемблеры, например GNU Assembler (GAS), используют AT&T синтаксис). В языке Fasm-а избегается, чтобы средства обслуживания, такие как наложение сегментов (а также связанные с ASSUME директивой), используемый MASM и совместимыми ассемблерами, поскольку они могут часто быть запутывающими — программисты должны отследить содержание регистров процессора и за местоположением переменных, которые они используют.