Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

FASM

Матеріал з Вікіпедії — вільної енциклопедії.
Flat assembler
Типасемблер
РозробникТомаш Гриштар
Стабільний випуск1.71.17 (29 січня 2014)
Версії1.73.32 (4 грудня2023)[1]
Операційна системаDOS,DexOS,Win32,Linux,BSD,MenuetOS,KolibriOS
Мова програмуванняасемблер Редагувати інформацію у Вікіданих
ЛіцензіяЛіцензіяBSD
Онлайн-документаціяflatassembler.net/docs.php?article=manual(англ.) Редагувати інформацію у Вікіданих
Репозиторійgithub.com/tgrysztar/fasm
Вебсайтflatassembler.net

FASM (flat assembler) —асемблер, для архітектур IA-32 та x86-64, використовує синтаксис Інтел. Відомий своєю швидкістю компіляції, оптимізацією розміру скомпільованого коду, портованістю на різні ОС та широкими можливостями препроцесора (макросами), що дозволяє автоматизувати безліч рутинних завдань. Він є низькорівневим асемблером та навмисно має лише невелику кількість опцій командного рядка.FASM є вільним та відкритим програмним забезпеченням.

FASM має біндинги доGUI таOpenGL на платформіWindows. Всі версії FASM можуть створювати файли таких форматів: «сирі» бінарники з пласкою адресацією (що використовуються передусім якDOS COM застосунки чи SYS драйвери), об'єктні файли:ELF чиCOFF (як класичного так і MS-орієнтованого вигляду), чи застосунки у форматах MZ, ELF, PE (включно з драйверамиWDM). Також існує неофіційний порт на архітектуруARM (FASMARM).[2]

Історія

[ред. |ред. код]

Проєкт розпочав у 1999 році польський студент математики Томаш Гриштар. Перший публічний випуск був представлений 15 березня 2000 року. FASM сам повністю написаний на асемблері і йде із повним початковим кодом. З версії 0.90 FASM може скомпілювати свій власний код. Він використовувався для написання декількох операційних систем, включаючиMenuetOS таDexOS.

Архітектура

[ред. |ред. код]

Приклади

[ред. |ред. код]

ПрикладWindows-програми«Hello, world!», яка викликає повідомлення за допомогою функціїMessageBox:

formatpegui4.0entrystartinclude'win32a.inc'start:invokeMessageBox,NULL,message,message,MB_OKinvokeExitProcess,0messagedb'Hello,World!',0dataimportlibrarykernel32,'kernel32.dll',\user32,'user32.dll'include'api/kernel32.inc'include'api/user32.inc'enddata

Або так:

include'win32ax.inc'.codemain:invokeMessageBox,NULL,'Hello,World!','Fasmmessagebox:',MB_OKinvokeExitProcess,0.endmain

Трохи складніша версія, з визначенням секцій вPE-файлі:

formatpeguientrystartinclude'win32a.inc'section'.data'datareadablewriteablemessagedb'Hello,World!',0section'.code'codereadableexecutablestart:invokeMessageBox,NULL,message,message,MB_OKinvokeExitProcess,0section'.idata'importdatareadablewriteablelibrarykernel32,'kernel32.dll',\user32,'user32.dll'importkernel32,\ExitProcess,'ExitProcess'importuser32,\MessageBox,'MessageBoxA'

Приклад простого застосунку в.COM форматі.

org100hmovah,9hmovdx,helloint21hmovah,8hint21hint20hhellodb13,10,"Hello,World!$"

Приклад простого застосунку вELF форматі.

formatELFexecutable3entrystartsegmentreadableexecutablestart:moveax,4movebx,1movecx,msgmovedx,msg_sizeint0x80moveax,1xorebx,ebxint0x80segmentreadablewriteablemsgdb'Helloworld!',0xAmsg_size=$-msg

Див. також

[ред. |ред. код]

Примітки

[ред. |ред. код]
  1. Download
  2. Жуковський, В.; Жуковська, Н.; Власюк, А.; Сафонюк, А. (24 жовтня 2019).Method of Forensic Analysis for Compromising Carrier-lock Algorithm on 3G Modem Firmware(англ.).IEEE.doi:10.1109/UKRCON.2019.8879941. Архіворигіналу за 24 червня 2021. Процитовано 20 червня 2021.
Середовища розробки
Транслятори
MASMGASFASMNASMRosASMTASMYasmHLASM
Формати синтаксису
Рівень
Низькорівневі
Високорівневі
Загального
призначення
Серверні
Запитів до баз
даних[суперечливо 1]
Розмітки тавекторної
графіки
[суперечливо 1]
Синхронні
Символьних та
чисельних обчислень
Квантових обчислень
Логічні
Академічні
Езотеричні
  1. абНемає загальноприйнятого рішення, чи вважати усі ці мови саме мовами програмування
Отримано зhttps://uk.wikipedia.org/w/index.php?title=FASM&oldid=43263920
Категорії:
Приховані категорії:

[8]ページ先頭

©2009-2026 Movatter.jp