Фасм

Фасм
flat assembler
Тип компилятор
Разработчик Томаш Гриштар
ОС Win32, основанные на BSD, 29 марта 2009
Лицензия Вариант лицензии BSD с возможно анти‐GPL исключением
Сайт flatassembler.net

flat assembler (fasm) — свободно распространяемый многопроходной ассемблер, написанный Томашом Гриштаром (англ. Tomasz Grysztar). Fasm написан на самом себе, обладает небольшими размерами и очень высокой скоростью компиляции, имеет богатый и ёмкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач.[1][2] Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без компоновщика. В остальных случаях нужно использовать сторонние компоновщики, поскольку таковой вместе с fasm не распространяется.

Помимо базового набора инструкций процессора и сопроцессора fasm поддерживает наборы инструкций SSE, SSE3 и 3DNow!, а также EM64T и

Содержание

Препроцессирование

На стадии препроцессора раскрываются все макросы, символические константы, обрабатываются директивы препроцессора.

В отличие от стадии ассемблирования, препроцессирование выполняется только 1 раз. Смешивание стадий ассемблирования и препроцессирования — распространённая ошибка начинающих.

Ассемблирование

На стадии ассемблирования определяются адреса меток, обрабатываются условные директивы, раскрываются циклы и генерируется собственно программа. Fasm — многопроходной ассемблер, что позволяет ему делать некоторую оптимизацию, например, генерирование короткого перехода на метку вместо длинного. Во время прохода компилятор не всегда может вычислить выражение в условных директивах. В этом случае он делает какой-нибудь выбор и пытается скомпилировать дальше. Благодаря тому, что адреса меток, вычисленные на N-ном проходе, используются на N+1-проходе, этот процесс обычно сходится.

Формат записи инструкций

Используется Intel-синтаксис записи инструкций.

Единственное существенное отличие от формата, принятого в других ассемблерах (MASM, [label_name], а просто label_name означает адрес (то есть порядковый номер) ячейки. Это позволяет обходится без ключевого слова offset. Также в fasm при переопределении размера операнда вместо byte ptr пишется просто byte, вместо word ptr — word и т. д. Не позволяется использовать несколько квадратных скобок в одном операнде, таким образом вместо [bx][si] необходимо писать [bx+si]. Эти изменения синтаксиса привели к более унифицированному и лёгкому для прочтения коду.

Пример программы

Это пример Windows-программы «Hello world», которая выводит это знаменитое сообщение с помощью функции

Или так:

 include 'win32ax.inc'
 main:
   invoke MessageBox,HWND_DESKTOP,'Hello, World!','Fasm message box:',MB_OK
   invoke ExitProcess,0
 .end main

Усложнённый вариант, с уточнением секций в PE файле:

 format PE
 entry start
 include 'win32a.inc'
 
 section '.data' data readable writeable
 
 message db 'Hello, World!',0
 
 section '.code' code readable executable
 
 start:
 invoke MessageBox,HWND_DESKTOP,message,message,MB_OK
 invoke ExitProcess,0
 
 section '.idata' import data readable writeable
   library kernel, 'kernel32.dll', user, 'user32.dll'
   import kernel, ExitProcess, 'ExitProcess'
   import user, MessageBox, 'MessageBoxA'

Формат выходных файлов

С помощью директивы format можно указать следующие форматы выходных файлов:

Операционные системы

  • Microsoft Windows, Windows NT
  • Основанные на
  • Основанные на libc (UNIX-подобные)
  • KolibriOS — не поставляется в стандартном пакете fasm, поставляется вместе с этими операционными системами.
  • Нестабильная работа в Windows Vista

Поддержка fasm в сторонних программных продуктах

Файл поддержки синтаксиса fasm поставляется вместе с базовым пакетом IDE, такие как WinAsm Studio, Fresh (IDE) (специально спроектированный под fasm) и т. д.

Примечания

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Фасм" в других словарях:

  • номер —    1) Порядковое число предмета в ряду других однородных; порядковое число размера, вида или типа какого л., изделия, предмета и т.п.;    2) предмет или лицо, обозначенные определенным порядковым числом;    3) отдельное помещение в гостинице,… …   Историко-этимологический словарь латинских заимствований

  • артикул —    1) Книж. устар. отдельная статья, глава или параграф в законах, распоряжениях, договорах;    2) тип или род изделия, товара, а также его цифровое или буквенное обозначение.    ► лат. аrticulus «1) параграф, статья; 2) грамматический член».… …   Историко-этимологический словарь латинских заимствований

  • делегация —    Группа выборных или назначенных представителей какой л. организации, государства или коллектива.    ► средн.лат. delegatio «поручение, полномочие». Заимств. из польск. delegacja «представительство; поручение» (См.: Фасм., I, 496) или через фр …   Историко-этимологический словарь латинских заимствований

  • император —    Титул некоторых монархов, также лицо, носящее этот титул.    ► поздн.лат. imperator «повелитель, император». Заимств. из польск. imperator в том же знач. (Фасм., II, 129).    Употребляется с конца XVI в. (ДРС, V, 231). Впервые фиксируется в… …   Историко-этимологический словарь латинских заимствований

  • конституция —    I.    1) Основной закон государства, определяющий и закрепляющий его общественное, экономическое и государственное устройства, избирательную систему, принципы организации и деятельности государственных органов, основные права и обязанности… …   Историко-этимологический словарь латинских заимствований

  • matериальный —    1) Вещественный, физический, существующий независимо от сознания;    2) относящийся к материалам;    3) имущественный, денежный».    ► лат. materialis «вещественный». Заимств. из пoльск. materialny, белорус., укр. материальный «вещественный,… …   Историко-этимологический словарь латинских заимствований

  • ревизовать —    1) Произвести ревизию в 1 м и 3 м знач.) кого , чего л.;    2) подвергнуть ревизии (во 2 м знач.).    ► лат. revisere «1) вновь посещать; 2) пересматривать». Заимств., вероятно, из фр. réviser «проверять, подвергать осмотру» в Петровскую эпоху …   Историко-этимологический словарь латинских заимствований

  • роза —    Декоративный кустарник с крупными махровыми, обычно ароматными цветками разнообразной окраски и со стеблями, покрытыми шипами, а также цветки этого растения.    ► лат. rosa «1) цветок розы; 2) розовый куст». Заимст. из польск. róza, укр. рожа… …   Историко-этимологический словарь латинских заимствований

  • спекулировать —    1) Скупать товары и ценные бумаги с тем, чтобы наживаться при их перепродаже;    2) перен. стремительно извлекать выгоду из разных жизненных ситуаций.    ► лат. speculari «разведывать, разузнавать». Заимств. из нем. spekulieren «спекулировать» …   Историко-этимологический словарь латинских заимствований

  • эксперимент —    1) Научно поставленный опыт;    2) попытка осуществить что л., пробное осуществление чего л.    ► лат. experimentum «проба, опыт, испытание». Возможно, заимств. из нем. Experiment «опыт, испытание» в конце XVII в. (Фасм., IV, 516).    Впервые… …   Историко-этимологический словарь латинских заимствований


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»