|Subject:||Re: [Tinycc-devel] Questions regarding ARM Thumb code generation|
|Date:||Sun, 22 Mar 2020 15:03:22 +0100|
Hi, here is my personal opinion about CodingStyle:
If you do substantial modifications to a function, I prefer you don’t reformat it except:
- to change tabs to spaces
- to adopt a “common” style, for example if you see in this function “if ( n == 0 )” while the general style is “if (n == 0)”. I recognize that the term “common” means nothing at all :o)
In any cases, please resist to reformat anything else for your convenience because it is hard to see real modifications with diff.
Even I’m not sure to use Cortex-M7 one day, I’m quite impatient to see a new backend in TCC. Congrat Erlend
I have been trying to get a compiler running on a Cortex-M7. I've had success
with some of the GNU binutils (linker, assembler, objdump, ...), but getting
GCC to run seemed to be a bit too ambitious. I went looking around and found
TCC. Sadly it does not support thumb instructions, but I did find that someone
has attempted to get going with it:
While it barely compiles an empty function, I decided to spend a couple of
weekends trying to understand it and figure out if I could get it working.
Those weekends have now turned into month(s). Using the tests in the
tests/tests2 directory, I'm having a success rate of about 88% (I'm ignoring
those that are intended to not compile). The ones that fail are 4 due to
floating point support, 1 because of array copying, 1 due to C library issues
and 1 due to an immediate being out of range (still working on these). Note that
I'm running the tests manually since I can't run the test system on my MCU
(yet), so take the numbers with a grain of salt. I've also been using an older
version of TCC (from the link above), so I'll have to migrate my changes and
run all the newer tests too.
While I'm still hacking away on the original arm-gen.c it is starting to look
rather serious. So I figured I should ask a few questions on the mailing list
to ensure that I'm on the right track and that my contributions are welcome.
* Is anyone else working on something like this? I've searched the mailing
list but could not find any.
* The repository I found mentions a licensing issue. I've searched the
mailing list and found that the author of the original ARM codegen does not
want to re-license it. Personally, I don't mind leaving the license as is.
There is no way I will be able to write the thumb code gen from scratch,
so my code will be based on the ARM one and subject to the same issue. Do I
need to worry about this? It would really suck if my code gets dropped due
to relicensing in the future.
* Generally speaking, information to new contributors seems to be a bit
scarce. I'm guessing that I'll have to make a new target to the build system
at the very least, and new files for the thumb code gen. Is there anything I
should read up on before I attemt to do this?
* Code style: It is of course best to follow the existing code, but if I
contribute a new file, am I allowed to use my own style for it? I've read
the CodingStyle text file but it does not say much on this.
* If I do substantial modifications to a function, may I reformat it? I see
that some functions have a mix of spaces and tab indentation, I'd love to
make this consistent.
* C99: I could not find anything about mixed code and declarations. Am I
allowed to use this? I personally find this to be a really important
feature, since it improves readability by a lot. It also helps avoiding
uninitialized variables (RAII and all).
I will probably have more questions for later, but these are the most important
ones. If there are no major roadblocks I may even have a diff ready some time
in the next few months! Also if there is something special I should know
regarding adding a new codegen I'd love to know.
|[Prev in Thread]||Current Thread||[Next in Thread]|