Пример программы "Hello Fasm!" с комментариями.
Fasm - Flat Assembler
По Fasm написано столько хороших статей, что я не смог бы написать
ничего оригинального, поэтому приведу лишь отрывки из статьи
"Сравнение ассемблерных трансляторов" Автор: (c)Крис Касперски ака мыщъх
которую я прочитал на http://www.insidepro.com/kk/108/108r.shtml
>>>
Томаш Гриштар (Tomasz Grysztar)[аспирант Ягеллонского университета в Кракове]
задумал написать свою собственную ось,
названную Титаном и представляющую некоторое подобие DOS-системы для защищенного режима.
Перебрав несколько ассемблерных трансляторов, но так и не обнаружив среди них подходящего,
Томаш пошел на довольно амбициозный шаг, решив разработать необходимый инструментарий самостоятельно.
Это произошло в 1999-03-23, 14:24:33 (дата создания первого файла)
и уже к началу мая 1999 года появилась версия,
способная транслировать сама себя (FASM написан на FASM'е).
>>>
Что же такое FASM? Это ассемблер с предельно упрощенным синтаксисом
(никаких offset'ов и прочих захламляющих листинг директив),
полной поддержкой всех процессорных команд (в том числе и jmp 0007:00000000),
качественным кодогенератором, мощным макропроцессором и
гибкой системой управления за форматом выходных файлов.
>>>
FASM распространяется в исходных текстах на бесплатной основе
и к настоящему моменту перенесен на MS-DOS, Windows 9x/NT, Linux, BSD,
поддерживает уникод и все x86-процессоры вплоть до Pentium-4
с наборами мультимедийных инструкций MMX, SSE, SSEII, SSEIII, AMD 3DNow!,
а так же платформу AMD x86-64, позволяя генерировать не только Microsoft coff,
но и готовые bin, mz, pe и elf файлы.
То есть, фактически, FASM позволяет обходиться без линкера,
однако при этом раскладку секций в PE-файле и
таблицу импорта приходится создавать "вручную"
с помощью специальных директив ассемблера,
что выглядит очень заманчиво,
но на практике все же намного удобнее сгенерировать coff и скомпоновать его с модулями,
написанными на языках высокого уровня.
>>>
Макроязык FASM'а настолько мощный,
что позволяет писать программы на себе самом без единой ассемблерной строки.
>>>
"Математические" задачи, перемножающие матрицы,
вычисляющие координаты пересечения кривых в N-мерном пространстве
или трансформирующие графику легко пишутся на FASM'е,
поскольку не привязаны к конкретной операционной системе,
никаких API-функций они не вызывают и вообще не лезут туда,
где можно обойтись Си/Си++.
>>>
Домашняя страница FASM'а откуда можно скачать сам транслятор,
документацию на английском языке и сопроводительные примеры к нему:
http://flatassembler.net;
|