News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

HLA 2 Timeline?

Started by Bieb, August 15, 2005, 02:17:39 AM

Previous topic - Next topic

Bieb

I've never really thought much about HLA before.  I started to learn it, but when I realized it wasn't the standard syntax for Assembly language, I left it behind.  But now I'm planning a project that I'd like to be cross platform.  I had thought I'd need to use C, but then it occured to me, I should be able to use HLA, and still be able to work in Assembly language.  So anyhow, I have a few questions about HLA 2.

1.When will it be out?  I'd just like to know so that I can plan any future projects accordingly, and be able to start the one I'm talking about as soon as it's released.

2.Will it be totally cross platform?  That is, can I write a program for Windows console and have it work with Linux and Mac OS Terminal?  Will file IO operations be cross platform as well?

3.Is there any way I'll be able to use standard Intel syntax for my machine instructions?  I know the whole parentheses and more sensical order of arguments thing is really handy for new people, but typing parentheses with hundreds of machine instructions would get tiring, and I'm afraid to get used to the common sense means of argument order, and then go back to normal assemblers, and end up using Mov instructions backwards.  So, will I be able to turn all that off in HLA 2?

Anyhow, all that aside, the next version of HLA looks to be a really great tool.  Thanks for all the work you're putting into it. :U

Randall Hyde

Quote from: Robert Bieber on August 15, 2005, 02:17:39 AM
I've never really thought much about HLA before.  I started to learn it, but when I realized it wasn't the standard syntax for Assembly language, I left it behind.  But now I'm planning a project that I'd like to be cross platform.  I had thought I'd need to use C, but then it occured to me, I should be able to use HLA, and still be able to work in Assembly language.  So anyhow, I have a few questions about HLA 2.

1.When will it be out?  I'd just like to know so that I can plan any future projects accordingly, and be able to start the one I'm talking about as soon as it's released.
I don't have a timeline, per se. Actually, that's not true. At one time I *did* have a timeline. That timeline suggested that HLA v2.0 was supposed to be out a couple of years ago.  :'(

Currently, I'm working on the code that parses machine language statements. Almost all the code that handles declarations and the compile-time language is done. I'm emitting COFF files for data declarations. I've not worked on HLA v2.0 for about a month or two because of crisis mode at work, but once I'm past this (in about four weeks) I should be able to spend more time on HLA.

Of course, I don't consider HLA v2.0 to be an "emergency" project, as most of what you will be able to do with HLA v2.0 can be done by HLA v1.x today.

Quote
2.Will it be totally cross platform?  That is, can I write a program for Windows console and have it work with Linux and Mac OS Terminal?  Will file IO operations be cross platform as well?
Absolutely. My plans are to support Win32 first, Linux and Mac OS as rapidly as possible, and then add support for BSD, QNX, and maybe Solaris down the road. Blue sky plans include one of the BeOS projects and maybe SkyOS. But I wouldn't bet anything on those last two.

Quote
3.Is there any way I'll be able to use standard Intel syntax for my machine instructions?  I know the whole parentheses and more sensical order of arguments thing is really handy for new people, but typing parentheses with hundreds of machine instructions would get tiring, and I'm afraid to get used to the common sense means of argument order, and then go back to normal assemblers, and end up using Mov instructions backwards. 
Well, I can't help you with parentheses today, but you *can* switch the operand order using macros in HLA v1.x.  E.g.,


#id(mov)
#macro mov( dest,src );
  ~mov(src,dest)
#endmacro


As for HLA v2.0, there will be an "intel_syntax" mode (like Gas has), but you'll give up a lot of stuff to be able to use it. In particular, using the HLA standard library will be problematic in "intel_syntax" mode as the include files will contain macros that expand to HLA syntax.  Of course, this same problem occurs if you use the macro I've posted above...  In addition to this problem, there are other features you'll lose in the "intel_syntax" mode, features that standard Intel syntax won't support.

Of course, "intel_syntax" (like the Gas directive) is a bit of misnomer, it won't *really* be Intel syntax, but the parens will be gone and the operands will be reversed. Every thing else will be the same as it is in HLA (e.g., type coercion and so on).

Quote
So, will I be able to turn all that off in HLA 2?
You'll actually be able to switch between the two syntaxes on a line-by-line basis, if you're sick enough to do this :-). Having said that, let me point out that I use MASM and HLA on a regular basis and I don't have any problems adjusting to either one. After a couple of days using both, it's really no problem. Keep in mind, I spent over 15 years programming with MASM before developing HLA. Prior to HLA, I also used Gas. So the whole issue of dealing with the operands being switched is certainly something I've gone through myself. For me, at least, switching between the two hasn't been much of a problem.

Quote
Anyhow, all that aside, the next version of HLA looks to be a really great tool.  Thanks for all the work you're putting into it. :U

HLA v2.0 will be:

1. Faster
2. Generate object files directly (though support will still be provided to convert to other assemblers, if someone wants this).
2. Have better error messages and better error recovery
3. A few fundamental design problems will be corrected (these haven't affected too many people, but...)
4. A *few* new features will be added to the HLA Language
5. HLA will be ported to more OSes.

For most people, item #5 is probably the only thing that really matters. A few people are compiling larger programs and point #1 will be meaningful. Most of the other stuff, though, isn't going to be that big of a deal for most people. You hear people griping about the fact that HLA produces assembly output that must be processed by MASM -- but this is a perfectly meaningless complaint for any real HLA user -- it's a red herring, nothing more; HLA v1.x produces object files just fine.

Probably the only thing that HLA v1.x won't do for you is run under Mac OSX.  However, I'm pretty sure HLA v2.0 will appear before Apple stops making PPC machines in a little over a year. It may not be available when the *first* x86 Mac machines appear, but it will appear before too long after they show up. In theory, HLA v1.x could be ported to Mac OSX, the compiler is a trivial port; the real work in the HLA Standard Library. However, I refuse to let such an interesting project get in the way of getting HLA v2.0 finished :-)
Cheers,
Randy Hyde

indiocolifa

Where I can found a binary of your HLA 2.0 preliminary work?


Sevag.K

Documentation, theory, source and binaries:

http://webster.cs.ucr.edu/AsmTools/RollYourOwn/index.html

These have proven to be very educational for me.

indiocolifa

It's HLA 2.0 reliable now to do some programming???!   ::)

cheers.

Sevag.K

No programming is possible at this time, but the sources are at a point where they can be uitlized.  The lexer engine, binary search algorithm, expression evaluator, etc,  in my Arayna program are based on the HLA20 sources.

The code is written professionally and a joy to read.


Randall Hyde

Quote from: indiocolifa on September 20, 2005, 07:23:22 PM
It's HLA 2.0 reliable now to do some programming???!   ::)

cheers.

No. But I'm currently working on the parsing and intermediate code generation of the integer instruction set. I'd be farther along but I've got some major projects (for hire) in the works that take priority.

As soon as I have the intermediate code generation done, I'll post another release of the assembler developer's kit. At this point, I'll probably be in a reasonable position to start asking for some help on the HLA v2.0 project. My immediate goal is to provide an intermediate code to COFF generator (for Windows) and an intermediate code to Gas (assembly) generator (for Linux). With these two examples, some other party could be working on ELF binaries (for Linux) and convertors for other assemblers (e.g., MASM, FASM, NASM, TASM, whatever).

I'm also going to have to take some time off and put a lot of work into HLA v1.x that I didn't want to do. I need to port it to Mac OSX at some point in the future. Originally, I was not planning on doing this port until HLA v2.0 came along, but in order to port HLA v2.0 to Mac OS, I need HLA v1.x running under Mac OS (as HLA v2.0 is written in HLA and it will be a *long* time before HLA v2.0 self compiles itself).
Cheers,
Randy Hyde

Sevag.K

I've got several projects cooking myself, but I'm willing to help where I can.
I don't know much about this level of work, but willing to learn as I go along.  I've don'e some work on COFF format by writing a COFF symbols scanner, but that's about it, I couldn't find really good documentation for it