And the macro language is specific to nasm.
What to do: unroll the macros and/or use a little abstraction using a simple common macro preprocessor, aka not tied to the assembler.
And I am just doing exactly that: my x86_64 assembly code does assemble with fasm/nasm/gas with a little abstraction using a C preprocessor.