which is best one among these ones and why?
TASM,MASM,FASM,NASM,GOASM,YASM

which is portable?
which produce optimized code?
which is compatible for dos and windows app?

advice to use which assembler for both dos and windows portable
Posted on 2006-09-01 12:08:54 by AssemblyBeginner
That's a very broad question to which I got a link for you : Here.

Now, I have to admit that I never read through this whole page - I skimmed through a couple of passages at the beginning and read only a few paragraphs regarding one or two assemblers. I believe it to be accurate though.

Well, give it a read and ask away :)

Jimmy
Posted on 2006-09-01 12:24:16 by JimmyClif

which is portable?

GCC, followed by NASM, (probably followed by YASM), then FASM. MASM/TASM/GoAsm aren't really portable.


which produce optimized code?

YOU do :)


which is compatible for dos and windows app?

gcc, nasm, yasm, fasm, masm, tasm, goasm, ...


advice to use which assembler for both dos and windows portable

FASM is the "new popular kid on the block", NASM is the "old trusty partner". MASM is the most widely used one, and easiest to get help with here.
Posted on 2006-09-01 12:52:22 by f0dder
Actually you mean GAS, right? (I know, works in gcc)

I would narrow my choices to GAS, FASM and MASM, though masm is Windows only.  Nasm I just don't trust to be up to date but I really have never used it.  Goasm may be good but, except for Donkey, it seems no one much talks about it. 

Poasm just came out but I'm not sure how developed it is.  Maybe it's good but, again, it's windows only.
Posted on 2006-09-01 13:10:48 by drhowarddrfine
I would narrow my choices to GAS, FASM and MASM, though masm is Windows only.  Nasm I just don't trust to be up to date but I really have never used it.  Goasm may be good but, except for Donkey, it seems no one much talks about it.

NASM works pretty fine, it hasn't been *really* updated for a while but that's because it's pretty solid. It's more portable than FASM because it's C. Dunno if it has support for the latest SSE4 and VMX instruction sets, but face it - not many *need* those. So it's a viable choice.

(and yeah, I meant GAS and not GCC. I haven't slept much last night :P).
Posted on 2006-09-01 13:16:46 by f0dder
Poasm just came out but I'm not sure how developed it is.  Maybe it's good but, again, it's windows only.


drhowarddrfine,

Poasm is a nearly a Masm compatible assembler. The differences from Masm are based on the feautures of Poasm's macro engine otherwise it assembles successfully nearly all Masm source codes. Pelle Orinius, the author of Poasm released yesterday V1.00.34 and I can say that the tool is maintained regularly. The tool comes with PelleS C development package containing the powerfull MS link compatible Polink, Polib the librarian and various other tools.
Posted on 2006-09-02 03:27:51 by Vortex
yeah Id have to go along with that.
I probably would have gone with poasm if i was starting to learn assembly nowadays.
99 % of code for masm will pipe through POASM without issue.

It wasn't available when i began learning asm and I'm snug in my little masm rut right now  :P

One point REALLY worth of note is the EULA
IFAIK...
Masms will limit you to 'hobby' software, POASM and GOASM wont.
Posted on 2006-09-10 13:51:47 by Nice Eddie
the link from JimmyCliff is *REALLY* outdated, better don't take it into account.

FASM produces most optimized code possible, except for few hard-to-find cases. AFAIK, MASM and NASM don't do this, they are 2-pass assemblers. but as f0dder said, this is only matter of few bytes... vital for 256 or 512 bytes demos, not for real apps.

and FASM support on board.flatassembler.net is very good IMHO, very few people don't get answer, and AFAIK there are no "forbidden" questions ;)
I can't compare with this forum, i am too short time here. But you usually don't get answer only with "using technology" (like directX), not with general asm coding.
Posted on 2006-09-28 02:57:53 by vid
What about the former issue with FASM's documentation. Has it been fixed/resolved?

How does "FASM produces most optimized code possible" relate? Is it compared against standard NASM usage, or is it actually compared against NASM's "-O" option that optimizes branch offsets? At least I hope you are talking about branch optimization and not code optimization... as code optimization is a function of a compiler... not an assembler ;)
Posted on 2006-09-28 04:46:28 by SpooK
i mean choosing shortest possible encoding of given instruction. in some cases it is very hard to find best possible, for example size of one jump can affect whether other jump can be short or has to be near, but size of that second jump can also affect first one... and this is simpler case... FASM uses multi-pass assembling to find "best" possibility, eg. it "iterates" until it finds good solution.

I am aware of only one cae when FASM doesn't produce shortest possible encoding... but surely there are more.

there are also some controversial things with can be "optimized" (another instruction with same effect). Some were taken into FASM, others didn't:
http://board.flatassembler.net/topic.php?t=1238
Posted on 2006-09-28 05:04:08 by vid

AFAIK, MASM and NASM don't do this, they are 2-pass assemblers.

MASM is multi-pass assembler. It is mentioned somewhere in the documentation, but I could not find it now.
Posted on 2006-09-29 02:44:57 by MazeGen