flat assembler
Message board for the users of flat assembler.

Index > Main > Comparison of assemblers

Goto page 1, 2, 3, 4, 5  Next
Author
Thread Post new topic Reply to topic
vid
Verbosity in development


Joined: 05 Sep 2003
Posts: 7105
Location: Slovakia
vid
At the meeting, we agreed there is no objective comparison of assemblers. There was one from Randall Hyde many years ago, it even still has very high google ranks. But there is none up-to-date.

So every of you could add your little part to this... some facts about assemblers you have experience with. Or add some assemblers i forgot.

List of assemblers: More can be added soon by others
- MASM
- FASM
- NASM
- YASM
- GoAsm
- RosAsm

List of criteria placed in document yet:
- author
- homesite
- developed since
- whether/how development is active
- license
- dedicated forums
- under which platforms assembler runs
- supported instruction sets
- output formats
- debugging formats / debug info / listing

Planned criteria for soon addition:
- IDE support

Please post here to fill in any missing information. You can also post any info releated to topic, for future


Description:
Download
Filename: cmpasm.txt
Filesize: 5.95 KB
Downloaded: 1704 Time(s)



Last edited by vid on 15 Nov 2006, 13:58; edited 16 times in total
Post 02 Oct 2006, 20:15
View user's profile Send private message Visit poster's website AIM Address MSN Messenger ICQ Number Reply with quote
vid
Verbosity in development


Joined: 05 Sep 2003
Posts: 7105
Location: Slovakia
vid
okay, let's start about MASM optimizing... i bet MASM is not optimizing size of jumps, or at least fails to do it often (FASM fails seldom). This very basic example produced short jumps in FASM, but not in MASM:
Code:
@@: jmp @f
db 124 dup(?)
jmp @b
@@:    

(still, someone try it, i am not sure if mazegen compiled it right way with some optimizng command line switches, if they are there)
Post 02 Oct 2006, 21:06
View user's profile Send private message Visit poster's website AIM Address MSN Messenger ICQ Number Reply with quote
Betov



Joined: 17 Jun 2003
Posts: 98
Betov
Tom, the jumps sizes otimization is nothing but a _size_ optimization. Is has no effect, as far as i could know, on the speed. One classical example on why it may have some importance, is when nested inside a LOOP, or with a JECXZ...


Betov.
Post 03 Oct 2006, 17:58
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
I wrote a silly little 8 kb DOS util (still not quite finished but close enough) that assembles under 14 assemblers (automatically, via sed/batch). I have been cobbling together some notes about them. There are many, many other assemblers, though, and most of the others didn't please me (and some of the ones that worked hardly did).

Here's a few (mostly DOS) that you forgot:


  • NASM 2.03 (June 9, 2008)
  • Octasm 0.168 (May 25, 2008)
  • JWasm 1.7 (Japheth's fork aimed at better MASM 6.x compatibility, May 20, 2008)
  • YASM 0.7.1 (or latest snapshot)

  • NewBasic/NBASM32 00.26.11 (May 13, 2008)

    • now has support for 64-bit immediates (e.g. via dq) and emulation to workaround POPAD bug on early 386s

  • NGASM 1.3

    • new: 1.4 beta2 is also available (Dec. 25, 2007)

  • WASM 1.7a

    • OpenWatcom 1.7a final is available (Oct. 6, 2007)
    • OpenWatcom 1.6 (CM_CORE_DOSWIN.ZIP + optional DOS extender or CM_CORE_NT.ZIP) -- WASM.EXE (Dec. 2006)

  • LZASM 0.56 (August 6, 2007), compatible w/ TASM IDEAL mode only

    • - fixed 3DNow! instructions

  • Xasm 3.13 + patch (July 12, 2007)

    • (from what's new):
      Quote:

      added:
      - symbol table cache (additional info in status)
      - multidefinitions ... at last Smile
      - anonymous data definitions (with no name specified)
      - {a+} switch for better aligning control

    • NO-EXIT Patch for versions 3.13b and 3.13 - little fix that removes EXIT directive (1k)

  • (much older assemblers):
  • Intasm 0.52
  • Pass32 2.5.2 / 3.0 alpha 0.91 (or the no-FPU PASS32NC 3.0 alpha 0.7)
  • TMA 980729 [link broken] (final version, mini IDE broken, error inserting buggy) or 980705 (slightly older, somewhat stable)
  • Wolfware (WASM) 2.23 (bin, src)
  • ArrowASM 2.00c


Others include FASM (well, duh), CHASM, JAS (partial NASM rewrite), AASM, ANASM, DJASM, BLASM, Codex, Mingo, BCC/Dev86's AS86, Context/DOS's ASM8086, SASM, MagicASM, WeirdASM, GASM (Gareth), GASM (Jim Gage), GNU as, Alfred Arnold's AS, RosASM, GoASM, PoASM, SmallASM (from Small C), etc. (I'm sure I've ignored a few here besides obvious commercial ones like MASM, TASM, Optasm, A86/A386, ASM86, etc., weird x86/68000 hybrids like XFire, GEMA, Daniela, or Forth-ish ones like osimplay ... and don't forget compiler things like HLA and Terse). I have most of the above (excepting most Win32, commercial, or hybrids), but a few I haven't used much (if at all!).


Last edited by rugxulo on 14 Jun 2008, 04:31; edited 63 times in total
Post 04 Oct 2006, 05:20
View user's profile Send private message Visit poster's website Reply with quote
Octavio



Joined: 21 Jun 2003
Posts: 366
Location: Spain
Octavio
Well here is some marketing about Octasm in a Fasm board Smile
There is version for Dos but here i talk about Octa OS version.
multipass assembler with jmp optimization
- speed of compilation
on PIII 930mhz
about 600000 instructions per second + time needed to read sources
- clearness of syntax
It can not be more clear Twisted Evil
- power of syntax
eficient syntax for most used instructions:
call: func(params)
move: ax=6
suports math expressions with float numbers too.
code blocks don't need to be in order
multiple namespaces.
etc...
- quality of sources of assembler
very good ,i wrote it.
- how much is assembler embeddable (eg if it can be used in other projects)
flat 32 bit code ,should not be dificult to port
low memory requeriments.
- documentation
a few lines
- internals documentation
a fewer lines
- support by original author(s)
still alive
- activity on dedicated forums
no dedicated forum
- articles on it or using it
this article counts?
- usable apps written with it
Octa OS aplications ,see my web
- libraries for coding with it
Octa OS libraries
- editors for coding with it
Octa OS editor or any txt editor
- support for platforms, processors, formats, debug info formats
can read txt and elf formats,outputs binaries and symbol file.
- bugfulness, updates, bugfixes
some bugs,if you let me time i will correct them.
Post 04 Oct 2006, 07:44
View user's profile Send private message Visit poster's website Reply with quote
revolution
When all else fails, read the source


Joined: 24 Aug 2004
Posts: 17665
Location: In your JS exploiting you and your system
revolution
tom tobias wrote:
This product, the Intel (=AMD) cpu, is NOT USEFUL as an embedded device, because it requires too much current.
Well, sorry to be pedantic, but there a flaw in your statement. The chip mentioned is the Harris 80c286, the clock is 2MHz and the current is <2mA during sleep and ~4mA during run. This board was build in 1993. I hope this clears up any misconception that some may get from reading your post.
Post 04 Oct 2006, 10:42
View user's profile Send private message Visit poster's website Reply with quote
MazeGen



Joined: 06 Oct 2003
Posts: 977
Location: Czechoslovakia
MazeGen
The_Grey_Beast wrote:
Back to topic: I once tried MASM -- it's quite readable, can't complain. But it has that damn license, and I understand because it's Microsoft...

VC++ toolkit (which contains MASM) is for free and its license is very liberal.


Last edited by MazeGen on 05 Oct 2006, 12:29; edited 1 time in total
Post 05 Oct 2006, 12:01
View user's profile Send private message Visit poster's website Reply with quote
Borsuc



Joined: 29 Dec 2005
Posts: 2466
Location: Bucharest, Romania
Borsuc
MazeGen wrote:
VC++ toolkit (which contains MASM) is for free and its license is very liberal.
Well, it wasn't when I was using MASM Smile sorry for confusion
Post 05 Oct 2006, 12:37
View user's profile Send private message Reply with quote
arafel



Joined: 29 Aug 2006
Posts: 131
Location: Jerusalem, Israel
arafel
MazeGen wrote:
The_Grey_Beast wrote:
Back to topic: I once tried MASM -- it's quite readable, can't complain. But it has that damn license, and I understand because it's Microsoft...

VC++ toolkit (which contains MASM) is for free and its license is very liberal.


Mazegen,
What are the restrictions of VC++ toolkit license?
I know masm from Hutch's package can't be used for commercial purposes, or for OSes other than Windows (not sure about the os restriction though..).
Does this applies to VC++ toolkit too?
Post 05 Oct 2006, 14:45
View user's profile Send private message Reply with quote
MazeGen



Joined: 06 Oct 2003
Posts: 977
Location: Czechoslovakia
MazeGen
Embarassed

Sorry for the confusion, guys. The toolkit really doesn't contain MASM Sad

So the only way I know how to get MASM legally for free is download WinDDK or PSDK, but I'm not sure about their EULA.

Again sorry. I shouldn't be so prompt when I'm sick.
Post 05 Oct 2006, 17:46
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
tom tobias wrote:

Umm, if you have an opportunity to examine one circumscribed (i.e. delimited) region of the code, e.g. first section of the parser, could you compare the source code of two or three of those assemblers you do like, to illustrate how the authors address this task? I know I would profit from such an expose.
Smile


You want a breakdown of similar sections of my favorite assemblers' source code (NASM vs. YASM vs. OpenWatcom WASM? or FASM vs. TMA vs. Wolfware vs. Octasm?), e.g., regarding parsing a line for valid tokens (labels, mnemonics, operands, comments)? Honestly, I'm not really qualified to compare any of them (having never written my own assembler).
Post 07 Oct 2006, 23:14
View user's profile Send private message Visit poster's website Reply with quote
MazeGen



Joined: 06 Oct 2003
Posts: 977
Location: Czechoslovakia
MazeGen
Post 09 Oct 2006, 07:23
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
vid wrote:

- info about OctAsm that is missing in document


Well, I can agree that Octasm is pretty well written, has mostly low memory requirements, is fast, and is under active development. It does require a 386DX or better, though (i.e., 32-bit and needs a FPU).

Unique features? Well, anonymous labels, multiple instructions on one line, multiline comments (begin/end with ;;), slightly different macro and (local) label handling, but it also can run instructions from the cmdline.

The DOS version is able to use all memory except under EMM386 (v86 mode), so in that case, it defaults to 64k (less actually). My tiny DOS .COM (about 8,200 bytes uncompressed) won't assemble under EMM386 unless I rename (via sed/.BAT) all labels to shorter equivalents (TINYLBL.BAT -> #print_bgcolor_ret becomes #az100, etc.). So, it's not crippling, either clean boot (no mem. managers), use TINYLBL.BAT, or try OctaOS. Smile

The latest DOS version is 0.15 (Apr. 25, 2005), about a year and a half old. (OctaOS uses a newer version, 0.151, plus a few fixes). A new version (v0.2) is reportedly in the works. (Octavio is very diligent!).

I dunno about license, he never mentioned it. But, Octasm does assemble itself, so I guess it ain't too strict! Laughing
Post 12 Oct 2006, 00:26
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
GAS now supports Intel syntax (e.g., gcc -masm=intel -S myfile.c -o myfile.s), but I never use it by itself. In fact, there are only a few reasons I can think of for using it at all (BTW, gotta love phpBB, hehe):

  • GCC needs it (but YASM supposedly supports GAS syntax now)
  • you have code written in it (bits of Linux kernel?)
  • it's fairly fast (one-pass??)
Post 12 Oct 2006, 01:23
View user's profile Send private message Visit poster's website Reply with quote
arafel



Joined: 29 Aug 2006
Posts: 131
Location: Jerusalem, Israel
arafel
You can also specify Intel syntax from within gnu as source with '.intel_syntax' directive.
GAS without the C preprocessor is not much usable, since it lacks some very basic programming necessities. and also has quite different syntax from other assemblers which makes it hard to adapt to.
anyway it's a pain to code in pure gas without using some helpers like C preprocessor.
Post 12 Oct 2006, 05:07
View user's profile Send private message Reply with quote
arafel



Joined: 29 Aug 2006
Posts: 131
Location: Jerusalem, Israel
arafel
[GAS lacks] Transparent handling of nested structures for example.
Also I heard others complaining about macros support being limited in some ways. Although I never worked with gas macros, so can't say much about this.
Post 12 Oct 2006, 12:17
View user's profile Send private message Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
FASM is not the only assembler to assemble itself: TMA, Octasm, Intasm, Ngasm, A86, XASM, WolfWare, Rosasm, etc.


Last edited by rugxulo on 18 Oct 2006, 00:04; edited 1 time in total
Post 16 Oct 2006, 21:45
View user's profile Send private message Visit poster's website Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
Quote:

Are they free ? (as in freedom and as in Free Beer)

All the ones I mentioned (besides Ngasm and A86/A386) come with source and are free (no cost).

Octasm supports MMX, SSE3, and 3dNow! (according to the Programmer's Heaven description page for the download). A386 only supports through the P3. Rosasm supposedly supports at least SSE3 (I'm too lazy to further search their forum, but surely a Win32 assembler such as itself supports newer instructions).
Post 18 Oct 2006, 00:09
View user's profile Send private message Visit poster's website Reply with quote
Kain



Joined: 26 Oct 2003
Posts: 108
Kain
Well, here's a preliminary HLA description.

pros
-portable
-flexible, embedding as easy as setting up a couple environment variables
-High/low level syntax by user preference. [operand ordering similar to AS]
-highly documented
-dedicated Assembly book
-active support by original author
-dedicated open-source IDE
-dedicated portable standard library with hundreds of functions
-ability to generate source in various formats FASM, MASM, AS, TASM.
-very powerful macro system
-by default, embeds exception handling code that catches many errors
-built in and user definable types allows for solid coding foundation
-built in OOP support

cons
-supports x/86 32 bit only
-moderate forum activity
-source code in C, Flex/Bison
-slow compilation speed
-needs a backend low level assembler, but it has optimizing potential of backend.

source code
-internals documentation in form of comments in source code

_________________
:sevag.k
Post 18 Oct 2006, 20:31
View user's profile Send private message Reply with quote
rugxulo



Joined: 09 Aug 2005
Posts: 2341
Location: Usono (aka, USA)
rugxulo
Hey vid,
Here's a list of assembler authors (mostly DOS-based, but most are unsupported, bold means still actively developed or updated within the last three years or so, which IMO probably means "still actively developed"):


  • Pass32 - Dieter Pawelczak
  • NewBasic/NBASM32 - Benjamin David Lunt
  • Octasm - Octavio Vega Fernandez
  • Wolfware/WASM - Eric Tauck
  • Lazy/LZASM - Stepan Polovnikov
  • NGASM - G. Gurupandian, G. Namasivayam
  • Arrowsoft - Kaplan Morovitz
  • Intasm - Ryan Cecil
  • Xasm - Rafal Kmiecik
  • Tetrabyte/TMA - Sven Klose
  • FASM - Tomasz Gryzstar Very Happy
  • NASM - Simon Tatham, Julian Hall, et. al.
  • YASM - (Simon Tatham, Julian Hall), Peter Johnson, Michael Urman
  • JAS - (Simon Tatham, Julian Hall), Nicola Gaggi (src only, new GCC fails)
  • DJASM - DJ Delorie
  • BLASM - Andreas Berg (now discontinued?)
  • Mingo - Eduardo Motta Bührnheim
  • Snakessoft/SASM - Rodney McConnell
  • Gaz's/GASM - Gareth Owen
  • General/GASM - Jim Gage
  • AS - Alfred Arnold
  • RosASM - René Tournois
  • GoASM - Jeremy Gordon
  • PoASM - Pelle Orinius
  • SmallASM - James Hendrix
  • A86/A386 - Eric J. Isaacson
  • osimplay - Rick A. Hohensee
  • Daniela - Herbert Kleebauer


(Do these count??):


    HLA - Randall Hyde
    Terse - Jim Neil


Last edited by rugxulo on 07 Jan 2007, 05:22; edited 1 time in total
Post 20 Oct 2006, 03:07
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  
Goto page 1, 2, 3, 4, 5  Next

< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.

Website powered by rwasa.