· Начало · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› можно ли считать багом?

Посл.отвђт Сообщенiе


Дата: Июл 30, 2004 08:02:18

вот пример кода, где выдает ошибку фасм:
format PE GUI 4.0
entry start

	include '%include%\win32a.inc'

section '' code readable writeable executable
	start:
		invoke	ExitProcess,0
		invoke	MessageBeep
		invoke	MessageBox
		invoke	MoveWindow

	data import
		library kernel32, 'kernel32.dll',\
			user32, 'user32.dll'
			
		import kernel32,\
			ExitProcess, 'ExitProcess'
			
		import user32,\
			MessageBox, 'MessageBoxA',\
;			MessageBeep, 'MessageBeep',\ <------
			MoveWindow, 'MoveWindow'
	end data


ФАСМ пытается склеить две, или более строчек, после оператора "\", но фишка в том, что он не обрабатывает, является ли следущая строка комментарием или нет.
Думаю то же касается МАСМА.

Сабж?


Дата: Июл 30, 2004 08:45:29 · Поправил: Asterix

Это не баг, читаем у S.T.A.S.'а:
Ранее, я упоминал, что строка, состоящая только из комментария не удаляется, а заменяется на пустую строку.
Это значит, что код, подобный этому: 

db	1, 2, 3,\
;	4,5,6,\   - закомментировано
	7, 8, 9
преобразуется в: 
db	1, 2, 3
	7, 8, 9
и вызовет ошибку. Выход из положения - помещать символ \ до комментария: 
db	1, 2, 3,\
\;	4,5,6     - правильно закомментировано
	7, 8, 9
в результате будет: 
db	1, 2, 3, 7, 8, 9
как мы и хотели.


Дата: Июл 30, 2004 10:34:32

Asterix
спасибо за разъяснения