|
From: | Christian Jullien |
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 C From: Tinycc-devel [mailto:tinycc-devel-bounces+eligis=address@hidden] On Behalf Of Erlend Sveen Hi all! 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: https://github.com/gfwilliams/tinycc 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. Regards, Erlend Sveen |
[Prev in Thread] | Current Thread | [Next in Thread] |