News:

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

HLA v2.1 is now available on Webster

Started by Randall Hyde, August 29, 2009, 05:47:34 PM

Previous topic - Next topic

Randall Hyde

Hi All,

HLA v2.1 is now up on Webster. Visit the download page at
http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/HighLevelAsm/dnld.html

HLA v2.1 now includes native ELF generation via the HLA back-engine (HLABE) as well as numerous other defect corrections.  Under Linux and FreeBSD you can now directly generate ELF object files and link them with the HLA standard library (or other code) to produce executable files without going through the GAS assembler (as was done in the past).  You can also generate ELF files under Windows or Mac OS X (though those files are not directly usable under those OSes, you can move them to Linux or FreeBSD after compiling them under Windows or Mac OS X).

Cheers,
Randy Hyde



latte

Great!  Thanks very much for doing this (sheesh, you must never sleep.... ;)   ) 
- latte

DarkWolf

Cool, I have been getting a real headache trying to build 32 bit apps on a 64 bit machine (32 bit machine are getting harder to find). I never had a problem with HLA itself on AMD64 just the code it produces, I'll be interested in seeing what happens. MS may drop support for the win32 api in Windows 7 (or so) what happens to HLA when the world finally leaves 32 bit behind ? (Apart from using a VM I mean).
--
Where's there's smoke, There are mirrors.
Give me Free as in Freedom not Speech or Beer.
Thank You and Welcome to the Internet.

Evenbit

DarkWolf -

HLA 2.1 is still a 32-bit development platform.

Sevag.K

version 3.0 is slated for 64 bit OS.  By the time that rolls around, I'll probably shrink my 32 bit XP install to 80 gigs and dual-install an actual 64 bit OS on my 64 bit computer.
Kind of off topic, but do you know of any good 64 bit linux packages that play nice with winxp?  Right now I have a dual-boot ubuntu installed as a virtual file with wubi, works well enough but doesn't come in a 64 bit flavor.

DarkWolf

Sevag:
Ubuntu is available in 64 bit (though I don't know about wubi) I would avoid Xubuntu though, it's small and not a memory hog like Ubuntu but I don't think they have polished it much. (And Xubuntu is the system giving me this headache.)
FreeBSD is also available in 64 bit (I have this in a VitrualBox VM but haven't used it for HLA or much else like that, FreeBSD requires some real configuring and that is the reason I haven't been too productive with it. But you can set it up anyway you want. There is no livecd that you can install from get the dvd [and avoid the hassle of switching three discs every other package as you install software])
Net and Open BSD can also be found in 64 bit. (And require more configuring than FreeBSD when I tried them.)
If you are already familiar with Ubuntu then get the 64bit version of that.

Evenbit:
And yes I know HLA is 32 bit and I told the linker that but it still gives me a headache.
HLA runs fine and can generate elf object code but when I tell the linker to link for 32 bit it does but the program can't be executed despite being 32 bit
I can run 32 bit programs on AMD64 except ones built on my own.

I examined both with -v and don't know what the 64bit linker is doing different (the ld line is what HLA 2.1 generated not I )

x86 default options with -v
ld     -o "src/project" -lpthread -lc -I /lib/ld-linux.so.2   "src/project.o" "/media/data/Programming/asm/hlalib/hlalib.a"

x86 default options with -l'm elf_i386' -v
ld   -m elf_i386   -o "src/project" -lpthread -lc -I /lib/ld-linux.so.2   "src/project.o" "/media/data/Programming/asm/hlalib/hlalib.a"

x64 default options with -v
(can't do it need to emulate 32 bit in linker)

x64 default options with -l'm elf_i386' -v
ld   -m elf_i386   -o "src/project" "src/project.o" "/media/data/Programming/asm/hlalib/hlalib.a"

x86 file information (identical results from both x86 options above)
$ file src/project
src/project: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

$ ldd src/project
linux-gate.so.1 =>  (0xb7fba000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7f90000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e41000)
/lib/ld-linux.so.2 (0xb7fbb000)

x64 file information (identical results from both x64 options above)
$ file src/project
src/project: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped

$ ldd src/project
ldd: warning: warning you do not have execution permission for 'src/project'
not a dynamic executable

( Note I also tried including the libraries included when on the x86 cpu when compiling on the x64 and had the same results than if I had not. Also note that I have file permissions set on 'src/project' so the warning means something else. It's somewhere in the linking step, I asked here at MASM forums before and three or so times at Ubuntu forums and at GRC newsgroups. Best answer so far was someone at GRC news thought I didn't have the right libraries but that is as far as it got and never tracked down which ones or where. He thought I was trying to compile without the hlastdlib.a or something. And Ubuntu forums just repeated the mantra of using -m32 with either gcc or ld [which you can't do ld has no such option and I am not using gcc, at the time I used HLA/gas and now just HLA] And one guy gave me the commands for compiling a 32 bit AV in C [whatever I did post it was an assembly question ??] )
--
Where's there's smoke, There are mirrors.
Give me Free as in Freedom not Speech or Beer.
Thank You and Welcome to the Internet.