Ada 83 TLALOC on arm AARCH64 v8

Hello to all !

Pleased to inform interested Ada 83 fans that the TLALOC/Ada 83 compiler compiles for AARCH64 !

To test the validity of the TLALOC pure Ada 83 compiler backend architecture, I ported the codi_x86_64.finc macros to arm on Orange Pi3/Armbian. With the codi_arm64.finc file replacing the intel/linux version all present tests work. Only one day work with Claude AI. Only the binary emission of the same macros, so that nothing changes in the compiler, even LLIR finc files compiled for x86 can be reused for arm64.

As soon as possible I test bare metal porting on RISV-V. This will be more complicated.

Commits on Github ( GitHub - ViMoBr/Ada83_TLALOC · GitHub ) and Framagit, see the codi_arm64.finc file in src/expander/fasmg

That’s great! But please consider runtime library to be under GPL3 licence with Runtime exception (or GMGPL if you prefer GPL2), so that the compiler can be used for a commercial project. Compiler itself can be GPL. That’s license of FSF GNAT compiler.

Best regards!

Yeah, doesn’t mean it should go under the GPL. The GPL is a good way to stop people using it.

Hello Victor,

If I am not mistaken, your repo does not provide a LICENSE or similar.

In that case @VMo maybe you would like to consider adding a license so that people can contribute to your project. I don’t know, maybe there are some issues with licensing from the original work?

Cheers
– zen

I have taken look at the source files, license is GPL

Hi,

Nice work on the Ada83 compiler.

I have followed the instructions:

Clone the repository
git clone GitHub - ViMoBr/Ada83_TLALOC · GitHub
cd Ada83_TLALOC

Recompile the compiler
make_ada_comp.sh

Before being able to execute make_ada_comp.sh I had to create the build directory “mkdir build”. Something to add to the documentation?

The time to build the compiler was very quick, 1 or 2 seconds.

When using the a83.sh script for making FASM source code out of Ada code, the second input parameter is the path to the Ada source file relative to the directory pointed out in the first input parameter. I thought both were absolute paths and it took me a while to figure out that the second path is relative to the first. Perhaps also something to improve in the documentation?

It says on the compiler README.TXT that generics are supported. Both of these generic declarations fail to compile:

generic
type Element_Type is limited private;
type Index_Type is range <>;
type Element_Array is array (Index_Type range <>) of Element_Type;
with procedure Use_Element (Element : in out Element_Array);
procedure Cca_Allocate_Array (Last : Index_Type);

and

generic
type Element_Type is limited private;
with procedure Use_Element (Element : in out Element_Type);
procedure Cca_Allocate_Single_Item;

The error message is: raised PROGRAM_ERROR : idl.adb:351 explicit raise

I hope this initial feedback on using the compiler is useful.