comp.lang.ada
 help / color / mirror / Atom feed
* Adapting an Ada compiler to generate 8051 code (Again?! ;-)
@ 2021-03-30  9:04 mockturtle
  2021-03-30  9:56 ` Dmitry A. Kazakov
                   ` (6 more replies)
  0 siblings, 7 replies; 32+ messages in thread
From: mockturtle @ 2021-03-30  9:04 UTC (permalink / raw)


Dear.all,
for a project related to a possible start-up, we need to program a Flash controller that has a 8051 core (as many other controllers).  I would like using Ada for that, but I discovered (also by browsing c.l.a.) that there is no Ada compiler producing 8051 code.

I am considering involving some university colleagues of mine to start a project aimed to having an Ada compiler for 8051, possibly leveraging some existing compiler.  According to some post read here, I understand that it is not totally impossible, if we are willing to accept some limitations.

I did not study (yet) in detail the 8051, but as I understand it is a small 8-bit processor, with flash memory for code and data and  a small amount of RAM onboard (but maybe this depends on the specific controller).  My knowledge about compilers is superficial, but I guess we should give up to some Ada features like

*   Multitasking (maybe only non preemptive policy, single priority, no dynamic task allocation? Kind of coroutines...)

*    Dynamic memory allocation

*   Exception raising, but not handling, an exception would stop the execution (I guess having an exception inside a microcontroller is not a nice idea...  This sounds like a job for Spark to be sure that no exception will happen)

*   OOP?  Some of that can be retained?

*   Run-time check of contracts (maybe can be kept active during development and debugging)

Considering the kind of software usually run inside a micro-controller, these limitations do not sound too severe.  We would retain all the "syntactic features" of Ada like strong typing, packages, named parameters and so on... that are a strong help in writing correct software.  Also, with the limitations above a 8051 Ada code  most probably  would be also a Spark code. 


I have some knowledge about compilers, but not so deep to understand the difficulties of this project and I would like to ask you

1. The most challenging points that you see in such a project, also if I forgot something in the list of "feature to be given up"
2. Some compiler we can start from
3. An estimate of the effort in person-month (you wish...), considering a skilled but inexperienced programmer (like a skilled university student) 
 
Thank you!

Riccardo

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2021-04-02  0:41 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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