ARM compiler vs GCC compiler


#1

Hi

Does anybody know what is the difference between code generated by ARM compiler and code generated by GCC compiler?

For example, is there any principle difference between binary filesize or speed of execution or resource (memory) allocation?

Is there any restrictions of using GCC compiler?

For example, in “Geting started with Open AT”, page 6

What does it mean?


#2

Hello,

The GCC compiler generates much more binary code than compared with the ADS compiler.

An interesting example is the size of the precompiled IP libs:

The “arm_eDLib_302.lib” is ~230 kB big
but the “gcc_eDLib_302.lib” is ~723 kB BIG!!!

I’ve not seen any big difference of the execution speed but it is not unlikely that also the speed is different.

Remember that more code does not necessarily mean slower code, it depends if it is optimized for size or speed.

One important thing when using the 2 different compilers is of course to use the relevant .lib.
e.g.: use the “gcc_eDLib_302.lib” when compiling with GCC …

/Snoooze


#3

@Xage.
We used to say that the difference of the size is around 40%
For exemple in the sample part of the Open AT CD rom the HELLO WORLD sample size in GCC is 68K and with ARM its 39K.

@Snooze.
You are not downloading in the module the lib you have mentionned, those libs are link thats all but not downloaded.


#4

Yeah, I know that they are not downloaded as they are lib’s that are linked together with the application but there is still the fact that the lib’s are also built with different compilers.

I agree that the difference in size in this specific case (the IP libs) is not representative for the “normal” binary file difference between the ADS- and the GCC compiler.

I mentioned the IP lib’s as an example that the compilers really produce different code size, not as an example of the difference.

One of the original questions was:

And the answer is: The code generated by the GCC compiler is larger than the code generated by the ADS.

Xage:s last question is still kind of interesting since the text in the “Getting started” document states that the Open AT application must be compiled with the same compiler version as the Wavecom core software, but this can’t be true since the developer can choose either the ADS or the GCC compiler without knowing what the Core SW is compiled with. And the information about what compiler (version) the Core SW is build with cannot be found anywhere… (as far as I know)

My guess is that this text is something that did matter in the early versions of Open AT (when there was only support for ADS compiler) and that someone forgot to remove it in the updated document.

More comments are appreciated…

/Snoooze