Re: What is an Assembler

From: Herbert Kleebauer (klee_at_unibwm.de)
Date: 08/12/04


Date: Thu, 12 Aug 2004 13:49:13 +0200

Randall Hyde wrote:
> "Herbert Kleebauer" <klee@unibwm.de> wrote in message

> > I think HLA isn't a language at all. As I understand it,
> > HLA is the system (or only the public domain part of the
> > system; Randy never gave us a definition of HLA) which
> > converts a HLA source to an executable.
 
> HLA is most certainly a language. That is obvious to anyone who
> knows the first thing about formal language design.

I think you are completely mixing up terms. C or FORTRAN are
languages. You need a C- or FORTRAN-compiler to convert a C
or FORTRAN file to an executable. But an assembler is not a
language but a program (or a collection of programs) which
convert an assembler source file to an executable (comparable
to the C- or FORTRAN-compiler).

>From your link:
http://webster.cs.ucr.edu/AsmTools/HLA/HLADoc/HLARef/HLARef3.html#1035157

  Salomon offers the following definitions for a High Level Assembler (or HLA):
  A high-level assembler language (HLA) is a programming language

Here you use the same abbreviation (HLA) for two total different
things, the assembler and the assembly language. You also do this
in your posting which is the main reason for all this confusion.

Please give us a clear definition what HLA is. Is it the language
(then HLA is a very bad name, because an assembler is not a language,
better use HLAL High Level Assembly Language) or is it the program
(or system of programs) which converts a HLA source into an
executable.

> MASM is
> also a language, as is RosAsm, Fasm, Nasm, etc. And they
> are all *different* languages, with different syntaxes.

You can't mean that seriously. These are programs which convert
the source to an executable but not languages. Do you also call
MS Visual-C a language? C and C++ are languages, but
Visual-C is a product which you have to purchase and which
converts source written in C or C++ into an executable.

> HLA v1.x is an implementation of the HLA language. HLA v1.x consists
> of several modules:

And what is HLA without the extension "v1.x" or "language"?

> HLAPARSE.EXE, what most people seem to think of as "HLA", is

" most people seem to think of as "HLA" " because you never gave
us a concrete definition of the letters HLA. It can't be both,
the language and the assembler/compiler/translator.

> the compiler for the HLA language. It translates HLA source code into
> an intermediate form for further processing by the HLA back-end.
> It is *not* a preprocessor, regardless of what people around here
> may claim, it is a full compiler in every sense of the word.

Then we have no problem at all. You have defined a new language
(HLA or better HLAL High Level Assembly Language) and a compiler
is necessary to convert a source written in HLAL to an executable.
I still don't understand why you use the word "Assembly" in the
name of your newly created language, if you say yourself, that
the language supports high level programming and needs a
compiler and not only an assembler to generate an executable.
It is nothing but new HLL with support of inline assembly code,
but that doesn't justify the "Assembler" in it's name.

> This system, front to back, forms an assembly language development
> system, or an assembler.

No, this system forms a development system for the "High Level
Assembly Language" an is a compiler.

 
> The fact that HLA uses "off-the-shelf" components as part of the
                ^^^ now HLA is the compiler and not the language
> system (e.g., ml.exe) does not change this fact.
>
> The fact that HLA invokes a lower-level assembler at one point
> in the process doesn't change the fact (does the fact that
> ML.EXE invokes LINK.EXE mean that ML.EXE isn't an
> assembler?).

That's correct. That's the way most compilers work.

 
> > Now we have the statements,
> > HLA is an assembler and HLA is a HLL compiler. Don't you think
> > this is a contradiction?
>
> Actually, not at all. Assemblers are a special subset of the set of
> all compilers. All assemblers are compilers,

Wouldn't call an assembler which can do nothing but a line by line
conversion of a symbolic representation of CPU instructions into it's
equivalent binary code an compiler, but if you insist.

> though the reverse
> isn't true.

Correct. If the system is able to do more than an assembler, that
means, it is a real compiler, it can't be called an assembler anymore.
That's what I tell you all the time. HLA is more than an assembler
and can't be called an assembler anymore.

 
> > Just because HLA is able to also
> > process pure assembly source input doesn't make an assembler.
>
> :-)
> Whatever you say.

We already know your standard answer if no arguments are left.

 
> > It doesn't take away the fact, that HLA also can process
> > assembly language input, but it does take away the possibility
> > to call HLA an assembler.
>
> I guess you've taken away the possibility of calling MASM an
> assembler, too. Good luck getting your definition to stick.

I already told you to ask MS whether MASM is a (simple) Assembler
or a Macro Assembler. Try to call a first lieutenant just a
lieutenant instead of a first lieutenant an wait what will
happen. Do you think "Assembler" is something better than
"Macro Assembler" or "Compiler"? The opposite is true and
it would be an insult to call a "Macro Assembler" like MASM
just an "Assembler". But there is one purpose where the
assembler really is superior: teaching assembly programming.

 
> HLA, the system, is an assembler. Period.

HLA, the system. HLA, the language.

Here your own words:

  HLA v1.x consists of several modules:

  1. HLA.EXE - The "shell" program that drives the HLA system.
  2. HLAPARSE.EXE - The "front-end" or compiler of the HLA language.
  3. .....

  HLAPARSE.EXE, what most people seem to think of as "HLA", is
  the compiler for the HLA language. It translates HLA source code into
  an intermediate form for further processing by the HLA back-end.
  It is *not* a preprocessor, regardless of what people around here
  may claim, it is a full compiler in every sense of the word.
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  All assemblers are compilers, though the reverse isn't true.
                                           ^^^^^^^^^^^^^^^^^^

Now, how can you call HLA (the system) an assembler?

> Swap "MASM" for "HLA" in the above paragraphs.
> Convince the world that MASM is not an assembler.

As I said, it is a big insult if you call MASM an
Assembler instead of a Macro Assembler (isn't the M
in MASM not the abbreviation for Macro?).

> When you're done doing that, you'll get me to agree that
> HLA is not an assembler. But as long as the world
> accepts the fact that MASM and TASM are assemblers,
> then they won't have a problem with HLA being an assembler.

There is still a big difference between MASM/TASM and HLA.
If HLA couldn't do more than MASM/TASM, then why did you
create HLA instead of using MASM/TASM.

> And if you (and Rene and Wannabe) are the only ones
> whose opinions differ, who really cares?

Anybody who cares about people who think they have
learned assembly programming but didn't. I have no
problem if you promote HLA as a system which makes it
much easier to write applications than using an
Assembler, Macro Assembler or MASM/TASM. But I always
will offer resistance when you claim, that HLA is a
proper tool for learning assembly programming.
(HLA surely is an ideal tool for all who have to
learn assembly programing but don't like to. You
can claim you have learned even "High Level" assembly
programing without knowing anything about the processor
architecture.)



Relevant Pages

  • Re: HLA StdLib2 criticism
    ... HLC.EXE with an already existing C compiler and calls it HLC system. ... Suppose someone creates a new language and calls it "High Level ... Assembler" (HLA). ...
    (alt.lang.asm)
  • Re: What is an assembly language?
    ... HLA is an assembler. ... So what is this essential ability of an assembly language that is ... > that Randy-HLA isn't an x86 assembler. ...
    (alt.lang.asm)
  • Re: I think i finally got a definition of an Assembler!
    ... definition - you can _never_ have an assembler for that system. ... production of an object file, ... A compiler that produces a object file from transalting the source ... I was refering as Randallīs HLA as he hole system...It does not ...
    (alt.lang.asm)
  • What is an Assembler
    ... > I think HLA isn't a language at all. ... HLA is most certainly a language. ... HLAPARSE.EXE - The "front-end" or compiler of the HLA language. ... HLA.EXE is not an assembler. ...
    (alt.lang.asm)
  • Re: I think i finally got a definition of an Assembler!
    ... Being an assembler is defined not by ... The articles you mentioned do not mention HLA -- how can you ... This is commonly accepted as a compiler. ... the HLA implementation is a compiler. ...
    (alt.lang.asm)