flat assembler
Open source assembly language compiler.
The flat assembler (abbreviated to fasm, intentionally stylized with lowercase letters) is a fast assembler running in a variety of operating systems, in continued development since 1999.
It was designed primarily for the assembly of x86 instructions and it supports x86 and x86-64 instructions sets with extensions like MMX, 3DNow!, SSE up to SSE4, AVX, AVX2, XOP, and AVX-512. It can produce output in plain binary, MZ, PE, COFF or ELF format.
It includes a powerful but simple macroinstruction system and does multiple passes to optimize the size of instruction codes.
The flat assembler is self-hosting and the complete source code is included.
The only difference between flat assembler versions included in the following packages is the operating system on which they can be executed.
For any given source text each version is going to generate exactly the same output file, so each of the following releases can be used to compile programs for any operating system.
The flat assembler is made by a single person — Tomasz Grysztar — as a hobby project. Although it is an open-source freeware, donations are appreciated to help cover cost and time-loss. It is a great help in maintaining this project. If you would like to make a donation to the author, please click the button beside. |
|
flat assembler 1.73.30 for Windows size: 1037 kilobytes last update: 21 Feb 2022 9:32:49 UTC |
Apart from the command line version for Windows console this package contains the one with integrated syntax-highlighting editor, so you can edit, compile and execute your programs from one place. It also contains the set of includes with equates and macroinstructions for Windows programming and some examples of Windows programs created with help of them. The provided documentation is in PDF format. |
flat assembler 1.73.30 for Linux size: 342 kilobytes last update: 21 Feb 2022 9:32:52 UTC |
This is a version for the Linux systems running on x86 or x64 compatible processors. Includes the documentation in pure ASCII format and some examples of Linux programs. |
flat assembler 1.73.30 for DOS size: 448 kilobytes last update: 21 Feb 2022 9:32:48 UTC |
This version can be executed from command line of any operating system compatible with DOS and contains few tiny examples of DOS programs. It also contains the documentation in text format using DOS character set. If you want to use flat assembler from the command line of Windows system, you should use the Windows console version instead of this one. |
flat assembler 1.73.30 for Unix/libc size: 275 kilobytes last update: 21 Feb 2022 9:32:53 UTC |
This is version for all platforms that have support for the ELF object format and the C library, like OpenBSD or Zeta. The object file provided in this package can be linked with the 32-bit C library to create the final executable for any such system. The documentation in pure ASCII format is included. |
The flat assembler g (abbreviated to fasmg) is a new assembly engine designed as a successor of the one used by flat assembler 1.
Instead of having a built-in support for x86 instructions, it implements them through additional packages and in the same way it can be adapted to assemble for different architectures and purposes.
With the included example packages it is capable of generating all the output formats that flat assembler 1 could and additional ones, like Mach-O or Intel HEX.
flat assembler g jya9 size: 525 kilobytes last update: 05 Feb 2023 16:59:55 UTC |
This release contains executables for Linux, Windows and MacOS. It is packaged with examples of macroinstructions that allow assembly of simple programs for the architectures like x86, x64, 8052, AVR, or Java Virtual Machine. More examples and instructions set definitions for other architectures can be found in the further sections of this website. |
The following are third-party products based on flat assembler, available to download from their respective websites.
FASMARM | A cross-assembler for ARM architectures based on flat assembler 1, available in versions for Windows and Linux. |
Програмирование на fasm под Win64 часть 1 «Ассемблер, отладчик, IDE»
| Редактировалось 10 янв 2018
Введение
Я начинаю цикл статей по ассемблеру fasm. Возможно у вас есть вопрос: “Зачем в 21 веке нужен ассемблер?”. Я бы ответил так: Конечно, знание ассемблера не обязятельно, но оно способствует пониманию, во что превращается ваш код, как он работает, это позволяет почувствовать силу. Ну и в конце концов: Писать на ассемблере просто приятно (ну по крайней мере небольшие приложения).
Так что надеюсь, что мои статьи будут вам полезны.Где взять fasm?
Собственно тут: http://flatassembler.net/download.php
На этой странице Томаш Грыштар(создатель fasm-а) выкладывает последнюю версию ассемблера. Там есть версии для DOS, Linux, Unix и Windows, нам нужна для Windows. В скачанном архиве находятся следующие компоненты:
- fasm.exe – собственно сам ассемблер
- fasmw.exe – IDE (среда разработки)
- fasm.pdf – документация
- папка source – исходники fasm-а (написан на самом себе)
- папка include – папка с заголовками, импортами, и т.д.
- папка examples – примеры программ на fasm-е
Содержимое fasm.pdf дублирует 2 раздела документации “flat assembler 1.71 Programmer’s Manual” и “Windows programming” отсюда: http://flatassembler.net/docs.phpIDE (среда разработки)
Перед тем, как писать программы нужно определиться, в чём их писать. Для fasm-а существуют разные IDE, например: fasmw.exe(находится в архиве с fasm-ом), RadAsm, WinAsm Studio, Fresh, … Выберайте, какая вам больше по вкусу. Сразу скажу, что IDE из поставки fasm-а обладает минимальным количеством фичей, так что я бы рекомендовал использовать альтернативную IDE. Я, например, использую RadAsm 3.0, его можно взять здесь: https://fbedit.svn.sourceforge.net/svnroot/fbedit/RadASM30/Release/RadASM.zip (это хорошая IDE, но к сожалений она больше не обновляется) К статье приложен файл Fasm.ini, там выбрана чёрная тема, добавлены x64 регистры и добавлена подсветка для большего числа инструкций. Можете поставить его вместо Fasm.ini поумолчанию, только исправьте в нём пути к папке с fasm-ом в 6 и 7 строках. Там написано:
0=path,C:Program Files (x86)fasm;$A..Ollydbg 1=include,C:Program Files (x86)fasmINCLUDEЕсли вы распаковали fasm в папку <полный путь>, то надо заменить приведённый выше код на:
0=path,<полный путь>fasm;$A..Ollydbg 1=include,<полный путь>fasmINCLUDEОтладчик
Писать программы это — хорошо, но нужно находить и исправлять баги, для этого нужен отладчик. Существуют разные отладчики способные отлаживать 64-битный код например: WinDbg, fdbg, x64dbg. Наиболее удобный на мой взгляд — x64dbg, его можно скачать здесь.
Это — всё, что я хотел рассказать в первой части.
Вложения:
-
Fasm.zip
- Размер файла:
- 6,8 КБ
- Просмотров:
- 1.280
_qwe8013
Active Member
- Регистрация:
- 30 ноя 2016
- Публикаций:
- 2
Комментарии
-
omne999666 16 июл 2020
Легко все описано и освоилось напоследок удивило вложения файлика архива Fasm.zip в котором много интересного для настроек новых инструкций и регистров. Вводно понятно в месте содержания .ini и дополнение есть самим что не на есть знаниями.
-
addedie 22 сен 2019
перезалейте пожалуйста эту версию RadAsm, буду весьма благодарен….
-
седьмой 10 июл 2017
Спасибо, все разобрался, код работает под windows 7 — 64.
-
седьмой 10 июл 2017
Спасибо, очень интересно, но почему то Fasm в ОС вин 64 не компилируется код, скаченный по этой ссылке
код взял вот отсюда
-
use16 ;Генерировать 16-битный код
-
org 100h ;Указание компилятору вести отсчёт смещения от адреса 100h, так как DOS грузит по данному смещению.
-
mov dx,hello ;В DX адрес строки.
-
mov ah,9 ;Номер функции DOS.
-
int 21h ;Обращение к функции DOS.
-
int 21h ;/ Завершение программы
-
;——————————————————-
-
hello db ‘Hello, world!$’
код взял по ссылке http://www.programmersforum.ru/showthread.php?t=306951&page=2 Может быть там надо что то перенастроить? Выдает сообщение, что не может откомпилировать код в системе вин 64. Сам уже кажется понял, этот код для доса, а можно где то взять рабочий код минимальный для проверки работы компилятора Fasm вин 64?
-
Visit http://flatassembler.net/ for more information.
Flat assembler 1.73.27 for Windows
The flat assembler (abbreviated to fasm, intentionally stylized with lowercase letters) is a fast assembler running in a variety of operating systems, in continued development since 1999.
It was designed primarily for the assembly of x86 instructions and it supports x86 and x86-64 instructions sets with extensions like MMX, 3DNow!, SSE up to SSE4, AVX, AVX2, XOP, and AVX-512.
It can produce output in plain binary, MZ, PE, COFF or ELF format.
It includes a powerful but simple macroinstruction system and does multiple passes to optimize the size of instruction codes.
The flat assembler is self-hosting and the complete source code is included.
The only difference between flat assembler versions included in the following packages is the operating system on which they can be executed.
For any given source text each version is going to generate exactly the same output file, so each of the following releases can be used to compile programs for any operating system.