[Oberon] Dynamic local array implementation

Chris Burrows chris at cfbsoftware.com
Thu Oct 12 23:27:27 CEST 2017


> From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of Luca Boasso
> Sent: Friday, 13 October 2017 1:18 AM
> To: ETH Oberon and related systems
> Subject: Re: [Oberon] Clarifying type compatibility in Oberon-07

Re: The implementation of local dynamic arrays:

>
> Wouldn't you need a frame pointer to implement it? The current
> compiler does not need one, since the stack frame size is know
> at compile time, adding this feature would break this invariant.
> Am I missing something? 

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]

Regards,
Chris Burrows
CFB Software
http://www.astrobe.com





More information about the Oberon mailing list