Нет параметров командной строки, которые позволили бы NASM, GAS или LLVM понимать синтаксис MASM и директивы .
GAS .intel_syntax noprefix
подобен MASM, так что вам нужно иметь толькопортировать директивы (например, proc foo
/ end foo
вместо foo:
. И .long 1234
вместо dd 1234
) и макросы. По крайней мере, я бы сравнил машинный код с объектным файлом, созданным MASM, чтобы увидеть, собирается ли он так же. (по модулю абсолютных адресов, может быть). Или, по крайней мере, разборку различий, чтобы увидеть, разбираются ли обе версии в одну и ту же инструкцию.
Я не пробовал JWasm, но это, вероятно, ваш лучший выбор. Я думаю, что он должен действительно собрать синтаксис MASM. В долгосрочной перспективе вы можете хотеть уменьшить задержки сборки, портируя на GAS .intel_syntax
, в противном случае просто продолжайте использовать JWasm, если не окажется, что у него есть недостатки для переносимости или чего-то еще.
Есть ещена языке ассемблера, а не только строки с инструкциями на них. Выравнивание и расположение данных могут иметь значение, и любая хитрость с разделами / сегментами и их выполнение не имеет значения.