<div dir="auto">Is there a port underway?<div dir="auto">I'd like to use Oberon on this board.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Feb 19, 2018 3:00 AM,  <<a href="mailto:oberon-request@lists.inf.ethz.ch" target="_blank">oberon-request@lists.inf.<wbr>ethz.ch</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send Oberon mailing list submissions to<br>
        <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank">oberon@lists.inf.ethz.ch</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mail<wbr>man/listinfo/oberon</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:oberon-request@lists.inf.ethz.ch" target="_blank">oberon-request@lists.inf.ethz.<wbr>ch</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:oberon-owner@lists.inf.ethz.ch" target="_blank">oberon-owner@lists.inf.ethz.ch</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Oberon digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1.  CASE without ELSE (Andreas Pirklbauer)<br>
   2.  CASE without ELSE (Andreas Pirklbauer)<br>
   3.  A CASE quiz (Andreas Pirklbauer)<br>
<br>
<br>
------------------------------<wbr>------------------------------<wbr>----------<br>
<br>
Message: 1<br>
Date: Sun, 18 Feb 2018 22:37:02 +0100<br>
From: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank">andreas_pirklbauer@yahoo.com</a>><br>
To: <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank">oberon@lists.inf.ethz.ch</a><br>
Cc: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank">andreas_pirklbauer@yahoo.com</a>><br>
Subject: [Oberon]  CASE without ELSE<br>
Message-ID: <<a href="mailto:99A08E58-C6CC-4D57-A173-89917A617147@yahoo.com" target="_blank">99A08E58-C6CC-4D57-A173-89917<wbr>A617147@yahoo.com</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
    > > Does it mean that CASE statement for pointer/<br>
    > > record types work like an IF statement?<br>
<br>
  > Yes, it is a syntactic sugar for IF/ELSIF<br>
  > and type guard, nothing more.<br>
<br>
A key difference to the IF statement<br>
<br>
  IF t IS T1 THEN S1<br>
  ELSIF t IS T2 THEN S2<br>
   ...<br>
  END<br>
<br>
is that in the CASE statement<br>
<br>
   CASE t OF<br>
      T1: S1 |<br>
      T2: S2 |<br>
       ...<br>
    END<br>
<br>
the dynamic type t of the case expression is set to the type of the selected case, i.e. in the statements S1 labeled by T1, the case variable t is considered as of type T1, etc.<br>
<br>
This implies that no type guard t(T1) is needed in S1, etc, i.e. one can just write t instead.<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.inf.ethz.ch/pipermail/oberon/attachments/20180218/d72f2544/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.inf.ethz.ch/pipe<wbr>rmail/oberon/attachments/20180<wbr>218/d72f2544/attachment-0001.<wbr>html</a>><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Sun, 18 Feb 2018 22:40:42 +0100<br>
From: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank">andreas_pirklbauer@yahoo.com</a>><br>
To: <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank">oberon@lists.inf.ethz.ch</a><br>
Cc: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank">andreas_pirklbauer@yahoo.com</a>><br>
Subject: [Oberon]  CASE without ELSE<br>
Message-ID: <<a href="mailto:24E90C01-555F-4253-936A-C62BDED4E121@yahoo.com" target="_blank">24E90C01-555F-4253-936A-C62BD<wbr>ED4E121@yahoo.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
  > It would take some time (more than I currently<br>
   > have!) to prove whether or not this is the case.<br>
   > suspect that there is no other single CASE in<br>
   > PO2013 that would have the same impact<br>
   > but there are a few areas in the compiler<br>
   > where CASE statements could be reinstated<br>
   > and the cumulative improvements could be significant.<br>
<br>
I like your systematic approach to such questions. Gives<br>
you hard data which form the basis of sound(er) arguments.<br>
<br>
As for the potential improvements in the compilation<br>
speed, my ingoing hypothesis would be that ORS.Get<br>
is where the biggest improvement is still to be expected,<br>
as it has the most cases. The others (ORP.StandFunc, ORP,StandProc and ORP.factor, etc) may cumulatively<br>
contribute another 5-10% or so perhaps. But hard<br>
to say without doing the experiment.<br>
<br>
It would be instructive to construct something resembling<br>
the ?space-time map?, as shown in Arthur Sale?s<br>
paper for modern RISC processors (or the RISC<br>
used in PO2013). The graph shown in the paper<br>
cannot really be used as a reliable quantitative proxy as<br>
the Burroughs 7700 had special hardware support built in.<br>
Nevertheless, it?s an instructive qualitative insight.<br>
<br>
   > However, this assumes that programmers have bothered<br>
   > to think about which branches are likely to occur more<br>
   > frequently and shuffle their IF-ELSIFs so they are near the top.<br>
<br>
Or at least such that they roughly correspond to  a ?search tree? as described in Arthur Sale's paper. ORS.Get in PO2013 is an example, but it?s not perfect, because there, the subranges don?t lead to an optimum comparison tree.<br>
<br>
<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.inf.ethz.ch/pipermail/oberon/attachments/20180218/62e01130/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.inf.ethz.ch/pipe<wbr>rmail/oberon/attachments/20180<wbr>218/62e01130/attachment-0001.<wbr>html</a>><br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Mon, 19 Feb 2018 00:44:10 +0100<br>
From: Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank">andreas_pirklbauer@yahoo.com</a>><br>
To: <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank">oberon@lists.inf.ethz.ch</a><br>
Subject: [Oberon]  A CASE quiz<br>
Message-ID: <<a href="mailto:AF009A2D-D176-4D9E-8C57-FFB7E3550E6C@yahoo.com" target="_blank">AF009A2D-D176-4D9E-8C57-FFB7E<wbr>3550E6C@yahoo.com</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
  > The increase in size of the compiler sources is<br>
  > about 250 lines of code, i.e. an increase of 7%.<br>
  > ...<br>
  > Chris Burrows<br>
In the Oberon compiler for Oberon on Ceres, which targets the NS32000, the implementation is about 120 lines of code, (procedures Compiler.{CaseLabelList, StatSeq.CasePart}, OCH.{CaseIn, CaseOut}), and uses a straightforward method to construct the jump table in OCH.CaseOut (from lowest to highest bound).<br>
<br>
Difference between CISC and RISC or do you some special optimization not present in the Ceres implementation?<br>
<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.inf.ethz.ch/pipermail/oberon/attachments/20180219/eeebf5a2/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.inf.ethz.ch/pipe<wbr>rmail/oberon/attachments/20180<wbr>219/eeebf5a2/attachment-0001.<wbr>html</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mail<wbr>man/listinfo/oberon</a><br>
<br>
<br>
------------------------------<br>
<br>
End of Oberon Digest, Vol 165, Issue 14<br>
******************************<wbr>*********<br>
</blockquote></div></div>