FASM (flat assembler) — асемблер, для архітектур IA-32 та x86-64, використовує синтаксис Інтел. Відомий своєю швидкістю компіляції, оптимізацією розміру скомпільованого коду, портованістю на різні ОС та широкими можливостями препроцесора (макросами), що дозволяє автоматизувати безліч рутинних завдань. Він є низькорівневим асемблером та навмисно має лише невелику кількість опцій командного рядка. FASM є вільним та відкритим програмним забезпеченням.
Тип | асемблер |
---|---|
Розробник | Томаш Гриштар |
Стабільний випуск | 1.71.17 (29 січня 2014) |
Версії | 1.73.32 (4 грудня 2023)[1] |
Операційна система | DOS, , Win32, Linux, BSD, MenuetOS, KolibriOS |
Мова програмування | асемблер |
Ліцензія | Ліцензія BSD |
Онлайн-документація | flatassembler.net/docs.php?article=manual(англ.) |
Репозиторій | github.com/tgrysztar/fasm |
Вебсайт | flatassembler.net |
FASM має біндинги до GUI та OpenGL на платформі Windows. Всі версії FASM можуть створювати файли таких форматів: «сирі» бінарники з пласкою адресацією (що використовуються передусім як DOS COM застосунки чи SYS драйвери), об'єктні файли: ELF чи (як класичного так і MS-орієнтованого вигляду), чи застосунки у форматах MZ, ELF, PE (включно з драйверами ). Також існує неофіційний порт на архітектуру ARM (FASMARM).
Історія
Проект розпочав у 1999 році польський студент математики Томаш Гриштар. Перший публічний випуск був представлений 15 березня 2000 року. FASM сам повністю написаний на асемблері і йде із повним початковим кодом. З версії 0.90 FASM може скомпілювати свій власний код. Він використовувався для написання декількох операційних систем, включаючи MenuetOS та .
Архітектура
Приклади
Приклад Windows-програми «Hello, world!», яка викликає повідомлення за допомогою функції :
format pe gui 4.0 entry start include 'win32a.inc' start: invoke MessageBox,NULL,message,message,MB_OK invoke ExitProcess,0 message db 'Hello, World!',0 data import library kernel32,'kernel32.dll',\ user32,'user32.dll' include 'api/kernel32.inc' include 'api/user32.inc' end data
Або так:
include 'win32ax.inc' .code main: invoke MessageBox,NULL,'Hello, World!','Fasm message box:',MB_OK invoke ExitProcess,0 .end main
Трохи складніша версія, з визначенням секцій в :
format pe gui entry start include 'win32a.inc' section '.data' data readable writeable message db 'Hello, World!',0 section '.code' code readable executable start: invoke MessageBox,NULL,message,message,MB_OK invoke ExitProcess,0 section '.idata' import data readable writeable library kernel32,'kernel32.dll',\ user32,'user32.dll' import kernel32,\ ExitProcess,'ExitProcess' import user32,\ MessageBox,'MessageBoxA'
Приклад простого застосунку в .COM форматі.
org 100h mov ah,9h mov dx,hello int 21h mov ah,8h int 21h int 20h hello db 13,10,"Hello, World!$"
Приклад простого застосунку в ELF форматі.
format ELF executable 3 entry start segment readable executable start: moveax,4 movebx,1 movecx, msg movedx, msg_size int0x80 moveax,1 xorebx, ebx int0x80 segment readable writeable msg db 'Hello world!',0xA msg_size = $-msg
Див. також
Примітки
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
FASM flat assembler asembler dlya arhitektur IA 32 ta x86 64 vikoristovuye sintaksis Intel Vidomij svoyeyu shvidkistyu kompilyaciyi optimizaciyeyu rozmiru skompilovanogo kodu portovanistyu na rizni OS ta shirokimi mozhlivostyami preprocesora makrosami sho dozvolyaye avtomatizuvati bezlich rutinnih zavdan Vin ye nizkorivnevim asemblerom ta navmisno maye lishe neveliku kilkist opcij komandnogo ryadka FASM ye vilnim ta vidkritim programnim zabezpechennyam Flat assemblerTipasemblerRozrobnikTomash GrishtarStabilnij vipusk1 71 17 29 sichnya 2014 Versiyi1 73 32 4 grudnya 2023 1 Operacijna sistemaDOS Win32 Linux BSD MenuetOS KolibriOSMova programuvannyaasemblerLicenziyaLicenziya BSDOnlajn dokumentaciyaflatassembler net docs php article manual angl Repozitorijgithub com tgrysztar fasmVebsajtflatassembler net FASM maye bindingi do GUI ta OpenGL na platformi Windows Vsi versiyi FASM mozhut stvoryuvati fajli takih formativ siri binarniki z plaskoyu adresaciyeyu sho vikoristovuyutsya peredusim yak DOS COM zastosunki chi SYS drajveri ob yektni fajli ELF chi yak klasichnogo tak i MS oriyentovanogo viglyadu chi zastosunki u formatah MZ ELF PE vklyuchno z drajverami Takozh isnuye neoficijnij port na arhitekturu ARM FASMARM IstoriyaProekt rozpochav u 1999 roci polskij student matematiki Tomash Grishtar Pershij publichnij vipusk buv predstavlenij 15 bereznya 2000 roku FASM sam povnistyu napisanij na asembleri i jde iz povnim pochatkovim kodom Z versiyi 0 90 FASM mozhe skompilyuvati svij vlasnij kod Vin vikoristovuvavsya dlya napisannya dekilkoh operacijnih sistem vklyuchayuchi MenuetOS ta ArhitekturaPrikladiPriklad Windows programi Hello world yaka viklikaye povidomlennya za dopomogoyu funkciyi format pe gui 4 0 entry start include win32a inc start invoke MessageBox NULL message message MB OK invoke ExitProcess 0 message db Hello World 0 data import library kernel32 kernel32 dll user32 user32 dll include api kernel32 inc include api user32 inc end data Abo tak include win32ax inc code main invoke MessageBox NULL Hello World Fasm message box MB OK invoke ExitProcess 0 end main Trohi skladnisha versiya z viznachennyam sekcij v format pe gui entry start include win32a inc section data data readable writeable message db Hello World 0 section code code readable executable start invoke MessageBox NULL message message MB OK invoke ExitProcess 0 section idata import data readable writeable library kernel32 kernel32 dll user32 user32 dll import kernel32 ExitProcess ExitProcess import user32 MessageBox MessageBoxA Priklad prostogo zastosunku v COM formati org 100 h mov ah 9 h mov dx hello int 21 h mov ah 8 h int 21 h int 20 h hello db 13 10 Hello World Priklad prostogo zastosunku v ELF formati format ELF executable 3 entry start segment readable executable start mov eax 4 mov ebx 1 mov ecx msg mov edx msg size int 0x80 mov eax 1 xor ebx ebx int 0x80 segment readable writeable msg db Hello world 0xA msg size msgDiv takozhMova asemblera MASMPrimitkihttps flatassembler net download php Zhukovskij V Zhukovska N Vlasyuk A Safonyuk A 24 zhovtnya 2019 angl IEEE doi 10 1109 UKRCON 2019 8879941 Arhiv originalu za 24 chervnya 2021 Procitovano 20 chervnya 2021