From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Janus/Ada 3.2.1 Released!
Date: Thu, 27 Jun 2019 12:48:47 -0500
Date: 2019-06-27T12:48:47-05:00 [thread overview]
Message-ID: <qf2vhv$eej$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 8b10bd11-cc45-4842-8746-6b061bf1619d@googlegroups.com
"Optikos" <optikos@verizon.net> wrote in message
news:8b10bd11-cc45-4842-8746-6b061bf1619d@googlegroups.com...
On Wednesday, June 26, 2019 at 5:36:29 PM UTC-5, Randy Brukardt wrote:
> "Optikos" wrote in message
> news:228117e3-4382-4faf-807e-e562c41657c4@googlegroups.com...
> ...
>> >Randy, would putting Janus/Ada's front end on
>> >0) LLVM backend
>>> >be more difficult than any major target feature listed above alone
>>> >(e.g.:
>> >1) Janus/Ada as-is without LLVM plus ELF on x86;
>>
>> These are almost completely orthogonal: the existing code generator would
>> work for Linux, and the (old) Unix JLink did ELF. The issue with Linux
>> is
>> updating the runtime to use Linux system calls (these are different than
>> the
>> ones from the old Unix).
>
>I can sympathize to some degree. But on the other hand, Janus/Ada's old
>UNIX runtime would likely have been from the Spec 1170 era. Putting an
>end to the Unix wars, Spec 1170 evolved into the Single Unix Specification
>(SUS). The Linux Standard Base (LSB) pays immense homage to
>SUSv3:POSIX2001 (but not SUSv4:2008through2018 yet) without being
>perfectly compliant with SUSv3 in a minority of areas.
The old Unix compilers didn't use any C interface to make system calls, they
actually reproduced the binary calls (a call to a particular trap address
with a numeric code in a register - Linux does not use this same scheme). If
one was going to follow a scheme more like the one used for Windows with a
Linux compiler, all of that would have to be replaced. (And the 15+ years of
changes to the runtime would have to be created.) I don't think the actual
routines called would be that different.
>> OTOH, attaching LLVM is a totally different level of work, and I don't
>> know
>> enough about LLVM to say how easy or hard it would be. OTOH, we did
>> something similar of Unisys, so we already have most of the ability
>> available.
>
>Prior precedent is great news! The 4th cycle of learning (i.e., for LLVM's
>ways) is
>usually easier than the
>1st (i.e., from scratch: Z80 for CP/M) and
>2nd (i.e., relatively easy port of 8085 concepts on the Z80 to 8086
>concepts) and
>3rd (i.e., major stressor on the design to withstand an entirely different
>backend than
>the 2 prior RR-Software backends).
For the record, the Unisys one was the 7th different backend for Janus/Ada:
1st & 2nd (Z80 for CP/M, 8086 for MS-DOS) directly generated with no
intermediate code (and only peephole optimizations);
3rd (8086 for MS-DOS) using an intermediate code and full optimizer;
4th (80386 [32-bit] for MS-DOS with extender and later Windows), based on
the 3rd but different in some ways and adding concepts from the 5th;
5th (68020 for SunOS), built for a specific customer and never released (or
quite finished);
6th (SPARK), also built for a specific cutomer and never really tested after
funding disappeared;
7th (U2200 for Unisys) - 36-bit 1-complement numbers, using their back-end.
Randy.
next prev parent reply other threads:[~2019-06-27 17:48 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-26 5:12 Janus/Ada 3.2.1 Released! Randy Brukardt
2019-06-26 6:53 ` Jeffrey R. Carter
2019-06-26 22:40 ` Randy Brukardt
2019-06-26 7:31 ` briot.emmanuel
2019-06-26 8:52 ` Dmitry A. Kazakov
2019-06-26 15:41 ` Optikos
2019-06-26 22:36 ` Randy Brukardt
2019-06-27 0:37 ` Optikos
2019-06-27 17:48 ` Randy Brukardt [this message]
2019-07-09 15:44 ` Shark8
2019-07-09 16:19 ` Dennis Lee Bieber
2019-07-15 20:18 ` Randy Brukardt
2019-06-26 16:42 ` Jeffrey R. Carter
2019-06-26 14:43 ` Shark8
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox