I have been spending a considerable time the last 2 months looking at
assemblers and assembly.
This is mostly connected with my interest in the foundations of programming,
and also related to my illness: I have
ME, I am 57, and while my
mind seems still fairly sharp, it also is often as tired as is my body. So I
need something that works, is well-documented, and does not
involve my spending time and preciously limited energy on stuff that's trivial
or ought to be fixed, such as bugs, or install-problems, or bad
But I do like to understand as much as I can about
computers and programming,
and my health has recently improved somewhat thanks to medicines, and hence my
active interest in assembler, that I last looked at and worked with more or less
seriously in 1990, with Tasm for DOS.
So I searched the net in April, starting with "assembler" in Google, and
found lots of things that are interesting and worthwile investigating or
Some of this I briefly reported in BitsAndPieces 1.
Since then I found out more, as I sought for more - and two reasons to title
this number of BitsAndPieces "Personal Report" are that I know I do not
know much of assembly and that my academic degrees are not in Computer Sciences
but in psychology and philosophy. (So incidentally: Yes, we do have certain
knowledge - e.g. of our own ignorance and uncertainties about something.)
Here then is an interim personal report on assemblers.
Lately I have been most concerned with
RosAsm and context - and
see e.g. gatago-survey
for what I mean by "context". (It also gives this psychologist some
psychological thoughts, but that's another subject than programming, entirely.)
then, is an email-struggle between Hyde (of HLA) and Hutcheson (of
Masm32) on the one side, and Tournois (of Rosasm) at the other, that is
far from friendly or polite.
It seems to come down to the following:
Around 1995 Assembler - to setle on a term for language plus compiler
- seemed almost dead because of the arrival and success of Windows 95, and also
the increased speed and memory of CPUs.
At that time, the two most important assemblers were Masm and Tasm, both
commercial and supported by respectively Microsoft and Borland. There was a
freeware or shareware assembler called A86, written by Eric Isaacson, but that
seems to have been mostly a simplification of Masm, and to be for Dos only.
Also, Isaacson developed A386 for Windows, to which the same seems to apply (and
I saw neither and merely report what others wrote).
After the arrival of Windows 95 there soon was little interest in assemblers
and within a few years both Microsoft and Borland terminated their assemblers as
commercial products, although they kept including them in distributions of their
commercial C-compilers, but without support.
Between 1995 and 2000 Nasm, Spasm, and then Fasm were developed, and a few
years later GoAsm (and if my history
is wrong, see the introduction of this piece: I'm sorry, and report to the best
of my present partial knowledge).
The first was done by a group that wanted a free and open source Masm; the
third by Thomas Grysztar, who wanted a better Nasm; and the second by René
Tournois, who wanted a "specific assembler" (whence "SpAsm") for a new OS, calld
ReactOS, that was meant to be (and is) a free Windows-like OS.
SpAsm started ca. 1998, which was also around the time HLA was launched by
Randall Hyde (mostly as a concept, at that time, I believe).
Another assembler, developed somewhat later by Jeremy Gordon is GoAsm, while
Steve Hutcheson succeeded in getting Masm free from Microsoft, apparently by
legal ingenuities, and published it as masm32.
In 2003 Tournois ceased developing SpAsm and started developing RosAsm, and -
as far as I know - then or earlier started the problems between Tournois a.k.a.
Betov, and Hyde and Hutcheson a.k.a. Hutch. (The abovementioned
from March 2006.)
The background is in part political and is in part related to open
Tournois belongs, in his own words, to the "extreme left" in politics, and
Hyde is, also in his own words "a christian", and is according to Tournois a
neo-conservative, and Tournois is a proponent of GPL and Hyde is not, but Hyde
puts his software wholly in the public domain.
The e-mail exchanges between the threesome are not exactly scientific or
temperate or free from bias:
According to Hyde and Hutch, Tournois stole SpAsm from Isaacson's A386 shareware
assembler, and both SpAsm and RosAsm are badly documented and crap; according to
Tournois, who rather consistently refers to Hyde as "asshole" (Tournois is
French and temperamental - does he mean 'espèce d'un con'?), Hutch is almost
unable to program assembler, and Hyde is only after status and fame, which he
achieved by writing "The Art of Assembly", but not by writing a decent
recent compiler (for assembler, in assembler).
And so on ... (me, I'm a mere psychologist, who happens to be interested in
programming and in logic and mathematics, so I was somewhat surprised, also
noting that Hyde and Tournois must be around my own age, that is widely supposed
to be wise, mellow, and temperate, and that both are very smart men, concerned
with assembler, and in favor of open source development).
As far as I can see, Tournois seems to be right that Hutcheson is not so much
a great expert in Assembler as someone who got Masm free from Microsoft by legal
And Tournois' most important complaints about Hyde and Hutch, in so far as
they are not personal, seem to be that H and H make learning assembler more
difficult than is necessary; that HLA is not a real assembler (but something
like a preparser for Masm or Fasm); that HL + A (High Level + Assembler) is a
strange and mistaken construction; and that his own - Tournois' - vision of
an all-in-one assembler is better (than all the hassle with include and library
files, as is common in other assemblers).
The complaints of Hutcheson against Tournois are mostly, in so far as they
are not more personal, that Tournois has stolen A386, which reminds this
psychologist of projection, since even Hyde called Hutcheson's appropriation of
Masm of "doubtful legality", which very probably is true (but then to much of
what Microsoft does applies the same, at least under European law). And anyway,
this does not concern programming.
Besides, I suppose that Borland and Microsoft stopped developing assemblers
because it is not profitable, and because of much of the popular received wisdom
about programming since Windows 95 was that "everything can be done in C++", and
because Windows is written in C and requires C-calls and C-structures to use its
API. (And the only assembler I found for sale is in fact called Terse,
that seems mostly a special syntax for assembler. All the rest were free.)
Tournois' point against Hutcheson that he - Hutch - is not much of an
assembler programmer seems true, since there seems to be little software in
assembler by Hutch, and also little documentation by him (whereas there is a lot
But then Hutch got Masm free from Microsoft, which most non-lovers of
Microsoft and most lovers of assembly seem to consider A Good Thing, though
Tournois believes that Masm makes the learning of assembler much more difficult
than necessary (and Hyde agrees about this with Tournois, but his HLA takes a rather different approach
than does Tournois with RosAsm).
And according to Hyde (and Hutch) RosAsm is crap, and also badly documented,
and makes the learning of assembler more difficult, because it doesn't have
(real and proper) HL-constructs.
At my present state of knowledge (ignorance, really, but I have just one
life, and must try to make reasoned choices on the basis of partial information)
I cannot properly judge this, but it is a fact that Tournois has a working
integrated assembler including IDE, and that I could not get RadAsm going with
HLA (though it works fine with Masm32, and is a very good IDE), whereas Hide for
HLA is fine and useful, but not as powerful as RosAsm's source editor +
environment, that also precisely has the feature I thought of for Hide, namely
the Right Click to relevant documentation, that I could not try to implement in
Hide because I can't compile Hide with HLA. (Most probably because the source of
Hide is out of synchronization with the version of HLA, but that's an aside. And
I thought of the feature myself, before knowing anything about RosAsm, because
of Smalltalk's usage of its code-browsers
that I am familiar with.)
Also, it is a fact that there is a lot of source to be found for HLA, but
most of it does not go far. In fact, the common ground of most tutorials-
with-source-and-explanations for assembler are the Iczelion-tutorials, that I
have seen now for Masm, for HLA, and for RosAsm.
Apart from that RosAsm has considerably more than HLA in the way of
tutorials, at least to my present knowledge (and I have seen most of Hyde's and
In brief, it seems as if
RosAsm on the moment and since 2003 is the
best developed assembler, in terms of a more or less finished product to learn
assembler with, and that what it mostly lacks is a documentation as exists for
HLA, for those who want (or need) to learn assembler without any prior knowledge
It is quite possible that HLA 2.0 (and later), if this starts working, and
for example in combination with RadAsm, but without install-problems, is better
than RosAsm (for my interests and concerns), but I cannot properly judge this
now, and besides HLA 2.0 is in the process of being started, and I don't see it
properly working as planned and proposed by Randall Hyde in this year, at least.
And for me it is simply practically important that HLA-as-is does not have a
really good development environment, and RosAsm does.
So, summing up.... in a way this
of Assembler and Assembly was all pretty amazing and unexpected, also because
Hyde and Tournois must be around my age ± 10 years. (And by the way: Here is a link
to Randall Hyde's comparison of assemblers: "Which
Assembler is the Best?". This seems a more or less fair review, honestly
biased towards HLA, and well worth reading. But RosAsms documentation and
tutorials are better than Hyde allows for, in my experience, and I am not
personally biased, and the sort of student of assembler a developer of an
assembler is interested in finding.)
O, another point in this connection:
It is interesting most assemblers appear to be "one
man's vision". This is certainly true of A68 and A386, Fasm, Gasm, RosAsm, and
It underlines my own view of human beings - whatever done of great value is done
by an individual - and is interesting in itself, but it does make the judging of
assemblers (how to appropriate one's own time and energy for one's own
interests) more difficult.
In any case, I've decided to spend more time on
than on HLA, and the reason is that RosAsm at the moment is the furthest
developed open source assembler, and my own time and life are finite, and ars
levis, vita brevis. But I will keep following HLA, because its
documentation is good and its concept is interesting. (It were better, though,
if it were further developed.)
And there are quite a few interesting things about
RosAsm, that I also like a lot:
- way of handling
- the Right-Click
- one-file approach
(no jungle of include
and lib files and paths)
- including the source
in the executable
Much of it seems well-thought out (and indeed else it
wouldn't work, whatever its ultimate qualities on scales of
Especially the Right Click feature is excellent and
very, very helpful.
And what recommends
RosAsm further is that it is one
man's vision that works and that provides a lot of interesting tutorals
(such as YeoHS's).
For that is one of the other things about assembler I
have found: I like it a lot for the understanding it provides of computers, and
of what I may do with it if I learn it properly, but there are few examples of
complicated applications developed with them, other than perhaps
And the best examples I have seen came with RosAsm.
Anyway, thanks to delving a little in and around
assembly I do now have good instruments to learn to understand the computer
better - that I also can recommend to anyone of serious interest and sufficient
RosAsm (by René
Ollydbg (by Oleh
PEViewer (by Wayne
And finally two other reasons to use RosAsm rather than HLA, for the moment
and for me, are these:
RosAsm (I tend to think of it as rasm or rosa, given all the other xasms there are in
assembly-land, without any OrgAsm, though) has in its help (called B_U_Asm) a
file called "History" that lists and describes bugfixes starting with SpAsm in
1998 and, with a lot of SpAsm's bugs skipped, of bugfixes for RosAsm starting in
2003 up to V.2.049a which I use. It's a long and realistic list, and shows that
a lot of development time and effort were invested in it. That's one
reason for using it: HLA2.0 hasn't started properly yet, and a project like the
developing an assembler + IDE needs a lot of debugging and time to be working
Another strong reason in favour of RosAsm, for me, is
this: There's nothing like it, that I know of.
P.S. 7-7-07: I
received a helpful mail
that straightened out a
bit of my history, that
I have today corrected.