comp.lang.ada
 help / color / mirror / Atom feed
From: "Luke A. Guest" <laguest@archeia.com>
Subject: Re: Adapting an Ada compiler to generate 8051 code (Again?! ;-)
Date: Wed, 31 Mar 2021 05:46:36 +0100	[thread overview]
Message-ID: <s40urd$qbp$1@gioia.aioe.org> (raw)
In-Reply-To: 87a6qk9uua.fsf@nightsong.com

On 30/03/2021 22:48, Paul Rubin wrote:
> "Luke A. Guest" <laguest@archeia.com> writes:
>>> there are any really large obstacles to targeting GCC to the 8051
>> The biggest obstacles will be the severe lack of registers. But it's
>> possible, lm78 for example.
> 
> Do  you mean this?  https://www.ti.com/lit/gpn/lm78

Probably, same as the name in gcc/config.

> I wasn't familiar with it.  It looks awful, a couple special purpose
> registers and something like 19 bytes of ram (I didn't look closely).

Yup, very basic. I spoke to the author over email, he said he 
virtualises registers in the rtl and then generates code for the tiny 
amount of regs. I was looking at z80 at the time.

> Does gcc actually generate code for it?  I don't know whether gcc

Yup, apparently.

> targets any old-fashioned accumulator machines with no registers.  I
> thought it did, but maybe not.  I do know lots of people use it for the
> AVR8 / Aruino etc.

AVR isn't really an accumulator arch, it's got 32 registers. Even the 
6502 has a port, but that uses the zero page as virtual registers. The 
Z80 cannot do that as it starts executing from address 0 iirc.

> It hadn't occurred to me but yeah, maybe gcc is built more around
> register architectures and sdcc works differently.  I haven't really
> looked.

sdcc is much much simpler, has to be for the architectures it supports. 
Much more ad hoc than GCC. GCC is based around flat memory architecture 
and "many registers," that's in quotes because, well x86 ffs.

> I know SWEET16 is a 16 bit virtual machine that Steve Wozniak
> implemented on the 6502 in the original Apple II, to get higher code
> density than 6502 asm code.  It had 16 registers.  Doing something like
> that on an 8051 and targeting GCC to it sounds fairly plausible.  I
> wouldn't be surprised if it's been done already.

Dunno.

> Does a minimal Ada runtime (Ravenscar or whatever) make particular
> demands that require much outside-the-compiler support?

Ravenscare is 2 tasks max, no?

> Adacore Ada-to-C is proprietary?  Oh well.  I wonder if generating C
> output from GCC intermediate code is terribly difficult.
> 

Only way to do Ada to C that I can think of is with llvm with the C 
backend. If that's still being worked on.

  reply	other threads:[~2021-03-31  4:46 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-30  9:04 Adapting an Ada compiler to generate 8051 code (Again?! ;-) mockturtle
2021-03-30  9:56 ` Dmitry A. Kazakov
2021-03-30 11:24   ` Gautier write-only address
2021-03-30 11:27   ` mockturtle
2021-03-30 12:01     ` Dmitry A. Kazakov
2021-03-31 23:08       ` Randy Brukardt
2021-03-31 23:06   ` Randy Brukardt
2021-03-30 10:40 ` Niklas Holsti
2021-03-30 11:32   ` mockturtle
2021-03-31 23:14   ` Randy Brukardt
2021-04-01 15:07     ` Niklas Holsti
2021-04-01 23:34       ` Randy Brukardt
2021-03-30 11:24 ` Luke A. Guest
2021-03-30 13:28   ` Luke A. Guest
2021-03-30 12:45 ` Björn Lundin
2021-03-30 15:49 ` Shark8
2021-03-30 19:16 ` Paul Rubin
2021-03-30 21:28   ` Luke A. Guest
2021-03-30 21:48     ` Paul Rubin
2021-03-31  4:46       ` Luke A. Guest [this message]
2021-03-31  7:19         ` Simon Wright
2021-03-31 23:20         ` Randy Brukardt
2021-04-01 12:22           ` Luke A. Guest
2021-04-01 23:43             ` Randy Brukardt
2021-04-02  0:41               ` Luke A. Guest
2021-03-31  8:23     ` Niklas Holsti
2021-03-31 20:46 ` Gautier write-only address
2021-03-31 21:14   ` Shark8
2021-03-31 21:25     ` Gautier write-only address
2021-03-31 21:46       ` Shark8
2021-03-31 23:22       ` Randy Brukardt
2021-04-01 13:19   ` Luke A. Guest
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox