Фасм

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

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

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

  1. Tomasz Grysztar. Flat Assembler Programmer’s Manual (англ.)
  2. Randall Hyde. Which Assembler is the Best? (Какой ассемблер лучший?) (англ.)
  3. Тема на официальном форуме о создании изображений с помощью макросов 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). Впервые… … Историко-этимологический словарь латинских заимствований

*Предлагаемые к заключению договоры или финансовые инструменты являются высокорискованными и могут привести к потере внесенных денежных средств в полном объеме. До совершения сделок следует ознакомиться с рисками, с которыми они связаны.

Ссылка на основную публикацию