Многострочные коментарии в ФАСМе
о время создания и интенсивного тестирования программ на ФАСМе часто случается так, что надо закомментировать большие отрезки кода. В оригинальном
ФАСМе допустимо только комментирование единичных строк программы. Такой комментарий начинается со знака
; (точка с запятой) и заканчивается с последним знаком данной строки. Многие из нас, пользуясь языками высокого уровня, сталкивались с комментариями охватывающими сразу несколько строк кода (например в языке C/C++, где закомментированный фрагмент находится между символами
/* и
*/). Так родилась идея обогащения препроцессора ФАСМа возможностью поддержки многострочных комментариев вида
/* ... */.
Внимание: статья имеет только исторический смысл, так как здесь представлена пропатченная версия файла 'preproce.inc' работает правильно с версией 1.67.* ФАСМа и не учитывает последнюю эволюцию препроцессора ФАСМа.
Уважаемый читатель должен знать, что низкоуровенное решение проблемы многострочных комментариев, представленое на этой странице, является наилучшим и превосходит все другие "решения", которые используют макросы ФАСМа.
История проекта
В мае 2007 года я сделал необходимые исправления в файле
'preproce.inc' (препроцессор ФАСМа) и результат представил на форумах
ФАСМа и
WASM.RU. Затем
Mr_Silent добавил свои улучшения, которые исправляют нумерацию строк кода (это очень важно для правильной интерпретации сообщений компилятора, когда обнаружена синтаксическая ошибка в исходнике данной программы). Результат этих усилий уважаемый читатель может увидеть на этой странице.
Установка
Пропатченный файл
'preproce.inc' надо поместить в папке
'FASM\SOURCE' и скомпилить исходники компилятора ФАСМа для данной операционной системы. Пользователям системы Windows надо помнить о изменении исполняемых файлов
'FASM.EXE' и
'FASMW.EXE' находящихся в папке
'FASM' исправленными версиями.
Исходник
Здесь вы можете скачать архив содержащий пропатченный файл
'preproce.inc':
Пример использования
Ниже представлен пример несложной программы на ФАСМе, в которой использованы новые возможности которые даёт многострочный комментарий в стиле языка C/C++.
include '%fasminc%\win32ax.inc'
.code
; Типичный однострочный комментарий ФАСМа.
start:
invoke MessageBox, HWND_DESKTOP, "Hi! I'm the example program!", "Win32 Assembly", MB_OK
/*
Многострочный комментарий в стиле языка C/C++.
invoke MessageBox, HWND_DESKTOP, "Good bye!", "Win32 Assembly", MB_OK
*/
invoke /* Комментарий в стиле языка C/C++ внутри линии кода. */ ExitProcess, 0
.end start