Re: Porting to arm/aarch64

Daniel Diaz <[email protected]> Sat, 27 Jun 2020 10:21:25 +0200
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Hi Jasper,

Sorry again for late reply (the end of year at my University is pretty hard…).
Don’t worry about Code_Start for the moment, simply emit the function entry point (label). You’ll see later if you need to do some adjustments (e.g. stack).

Daniel


> Le 15 juin 2020 à 11:51, Jasper Taylor <[email protected]> a écrit :
> 
> Hi Daniel,
> 
> I've read the PORTING file but it's pretty incomplete in describing the task. I'm currently stalled trying to figure out how to implement the Code_Start function in the translation file. For most of the functions I can see where the translation comes from in the output of compiling asm_inst.c to assembler, but not for Code_Start -- that seems to depend on saving and restoring some registers that Prolog is using, so an equivalent cannot be made by the c compiler.
> 
> I am using the powerpc_any.c file as a starting point, as I have powerpc hardware I can build stuff on and it looks more like a RISC architecture so more similar to the ARM than x86. 
> 
> Also I haven't been able to figure out what registers to use on the ARM, as some are call-clobbered and this seems to cause problems for using them in assembly language.
> 
> Cheers
> 
>     Jasper
> 
> On 12/06/2020 13:35, Daniel Diaz wrote:
>> Hi Jasper,
>> 
>> Sorry for the late reply,
>> 
>> You can have a look at the PORTING file which gives some information about adding a new architecture. 
>> The main task is to write a mapper from MiniAssembly to Asm. See example files in src/Ma2Asm which contains mapper MA->ASM for various architectures. 
>> The mappers are written in C (it is a good idea to use another mapper as basis) .Maybe look at the file mips_irix.c file.
>> I generally look at the asm generated by gcc (using various optimization flags in order to understand the asm generated, -O0 to -O3).
>> For this you can look at src/Ma2Asm/FromC. Do a make (modify Makefile to test with various CFLAGS). It compiles asm_inst.c to asm ; the study of asm_inst.s gives you hints about the translation of MA instructions.
>> Maybe you need to adapt the asm_inst.c file.
>> Basically it contains C functions whose translation to asm helps you to write the mapper (the name of C functions are useful to know what Ma instruction it corresponds).
>> 
>> Don’t hesitate to write me directly if you need more help (by mail to [email protected] <mailto:[email protected]>).
>> 
>> Daniel
>> 
>>> Le 30 mai 2020 à 16:39, Jasper Taylor <[email protected] <mailto:[email protected]>> a écrit :
>>> 
>>> Hi all,
>>> 
>>> I am thinking about trying to port GNU prolog to the ARM architecture (linux os). Before I get started, has anyone already had a go at this, if so, how far did you get and what problems did you encounter?
>>> 
>>> Thanks for reading
>>> 
>>>     --Jasper
>>> 
>>> 
>>> 
>>