HLA (High Level Assembly): "sh: 1: hlaparse: not found"
I got myself the book "The Art of Assembly Language" by Randall Hyde.
This books uses an assembly/high level language called HLA as it's primary programming language. As far as i know there's only one compiler for this language and is called hla and written by the author Randall Hyde.
Its source code and pre-compiled binaries are available here:
http://www.plantation-productions.com/Webster/HighLevelAsm/LinuxDownload.html
I was reading a few pages before i got to the compiling of a hla program, then i encountered a problem.
I've added all hla executables to the $PATH variable, and libraries and includes as well to appropriate variables, hlalib and hlainc as described by the installation process on the same site mentioned.
I can perfectly fine call from bash the executable hla, however whenever the executable hlaparse is called for (it resides in the same directory as executable hla) i receive the following message: "sh: 1: hlaparse: not found".
I wonder why this is, is there a bug in the executable which is strange because bash specifically states that it cannot find the file hlaparse?(but it finds the other executable)
I have searched multiple terms with ixquick, but each attempt to find any useful information regarding this problem fails. I have however found posts by one other person with this problem, but no answers.
I really hope anyone of you can help me with this problem, as i'd loose alot of learning by error by not getting to compile the code i write.
I forgot to mention that i did not compile the hla, i downloaded the binaries.
Does the problematic file have execute permission set? Is it for wrong arch, i.e. 32-bit instead of 64-bit?
Thanks, i meant lose.
The file has permission to execute.
I think it's compiled for a 32-bit, i'm running a 64-bit Trisquel.
On the site it says, hla for the 80x86 processor.
Is this the problem? If this is the problem, will i be able to compile the code to run on a 64-bit?
I have downloaded the sources, and there's a makefile with the compiler options for each necessary file. There's an option to compile the problematic file 'hlaparse'. Every sourcefile is written in C, except two files that are written in the gnu assembler.
It appears that the file 'hlaparse' executable is the only one that relies on these two gnu assember files, the rest appears to be C only reliant.
I wonder if this could be the reason why the file 'hla' will execute, but not 'hlaparse', as 'hla' is entirely C, and 'hlaparse' relies on gnu assember object code that's somehow incompatible with my machine?
Alright. When i try to compile one of these two GNU Assembler files with the parameters specified in the makefile (as -o name.o file.gas), i get a bunch of erros saying: "Error: invalid instruction suffix for `instruction(eg popf)`."
I also receive at least two errors saying: "Error: `instruction(eg popa)` not supported in 64-bit mode."
Are these two GNU Assembler files, 32-bit specific? Do you know if it's possible to make them compatible with my machine?
I believe this is a problem but I don't know how to fix it. Perhaps the author of the language would know?
There is some multiarch system but people have had trouble with it.
Then there are virtualization solutions too if it's not possible to get it running on 64.
I solved the problem by installing Trisquel 6 i686.
Part of The Problem was/is that Trisquel amd64 does not include libc6-i386 which for i know includes 32-bit program loader and libraries.
After installing libc6-i386 i was able to execute the earlier unwilling file/executable 'hlaparse' completely fine.
However, another problem arouse from within hla.
I was unable to successfully link an hla outputed object file to the hla library and required files, as there were undefined references within these files, at least according to the linker 'ld'.
I hope someone will solve this problem and get it running on a amd64 Trisquel. But for now my lack of skill limits me to use a Trisquel i386, which works fine.