[Oberon] Dynamic local array implementation
Luca Boasso
luke.boasso at gmail.com
Fri Oct 13 05:54:54 CEST 2017
Thanks for the information!
On Oct 12, 2017 18:31, "Chris Burrows" <chris at cfbsoftware.com> wrote:
>
> From: Luca Boasso [mailto:luke.boasso at gmail.com]
> Sent: Friday, 13 October 2017 10:06 AM
> To: chris at cfbsoftware.com; ETH Oberon and related systems
> Subject: Re: [Oberon] Dynamic local array implementation
>
>
> The Astrobe compiler does use a frame pointer. Given the local
> variable 'a' declared as:
>
> VAR
> a: ARRAY OF INTEGER;
>
> The code generated by NEW(a, 10) is as follows:
>
> MOV r10,10
> STR r10,[fp,-8]
> MOV r10,r10 lsl 2
> SUB sp,sp,r10
> STR sp,[fp,-4]
>
>
> I see, that is similar to what I was expecting.
> If my understanding is correct, [fp, -8] and [fp, -4] represent an
> array descriptor, where you store the length and address on the stack
> respectively. SP is decremented by length*element size to make space
> for the array.Very neat!
> Is [fp,-4] the beginning or the end of the array "a"?
>
[fp,-4] corresponds to a[0]
> I have checked "An Oberon Compiler for the ARM Processor" p. 26 and
> it seems like in that compiler dynamic arrays are allocated on the
> heap:
>
No - global dynamic arrays were allocated on the heap but local dynamic
arrays were allocated on the stack. In that compiler a corresponding call
was generated to the procedure MAU.AllocH or MAU.AllocS respectively.
Astrobe used to do the same but now generates inline code for local dynamic
array variables instead.
>
> Do you know if that system had a garbage collector?
Apparently not (p. 25 of the same document):
"It is used for recording the hierarchy of extensions of a type (see
below), and contains the necessary meta information about the type that is
needed by a garbage collector. The latter information is not generated in
this current implementation, with the exception of the record’s size."
Regards,
Chris Burrows
CFB Software
http://www.astrobe.com
--
Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
https://lists.inf.ethz.ch/mailman/listinfo/oberon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20171012/38e78dba/attachment.html>
More information about the Oberon
mailing list