|
From: | Paulo Marques |
Subject: | Re: [avr-gcc-list] More observations: array of pointers to functions |
Date: | Tue, 27 Feb 2007 16:13:08 +0000 |
User-agent: | Thunderbird 1.5.0.7 (X11/20060909) |
David McNab wrote:
On Mon, 2007-02-26 at 13:22 -0700, Eric Weddington wrote:The line that you have above does some pretty needles math. You should be able to just simply do: fptr = (FuncPtr)pgm_read_word(&funcs_table[i]); Does that make any difference in the size of your code? It would be interesting to know one way or the other...The above option generates a whole lot more code. I posted my code earlier because I found that while it's not the most elegant C, it does generate the smallest code with gcc-avr at -O3
It might not make a difference here, but you keep saying things like "but caused severe code bloat, even at -O3."
-O3 is supposed to be _fast_, not _small_. For small code you should use -Os.
For a good size / speed compromise, just use -O2. With -O3 the compiler is allowed to do whatever it needs to do to increase performance, including loop unswitching, more agressive inlining, etc., even if it costs a lot of code size.
As for your particular problem, check the simple code from Joerg Wunsch as it seems to give the most optimal assembly possible for your problem.
-- Paulo Marques Software Development Department - Grupo PIE, S.A. Phone: +351 252 290600, Fax: +351 252 290601 Web: www.grupopie.com "The face of a child can say it all, especially the mouth part of the face."
[Prev in Thread] | Current Thread | [Next in Thread] |