pini wrote:
I'm using FASM too.
I found some features very useful, compared to NASM :
anonymous labels,
Maybe you could elaborate a bit more on that one, but NASM had a lot of features concerning labels, among other local labels (e.g. you can have .loop at several places provided they are in different functions), macro-local labels, etc.
Quote:
macro support,
NASM has it too, and NASM's macros are especially powerful, allowing a context stack to be manipulated (so that your macros can nest, etc)
Quote:
and computing on symbols. For example of the last, you can define a label and then compute things like
Code:
((my_lbl shr 12) and 0xFF00) or 0x3
which is very useful to construct tables, like GDT and IDT without the need of construction code.
okay, that one was a bit harder to get working since i got messages saying "operator >> can only be applied on scalar values", but just patching to
Code:
[org 0]
my_lbl:
my_modified dd (((my_lbl-$$) >> 12) & 0xff00) | 3
Honnestly, the only "real" argument i see to prefer FASM is that it is self-compiling... yet i'm not sure it is a so great advantage: you could easily compile a version of NASM that matches your own OS on your DevStation (tm) and run the binary in your OS after that...