Peter Dannegger wrote:
> Der Keil C51 hat dann auch ganz pragmatisch alles so gelassen, was er
> selber nicht besser machen konnte.
Der Keil hat praktisch nichts optimiert und nahezu alles gelassen,
wie es war. Habe ihn vor Jahren selbst auf einem mc68020 benutzen
dürfen... hat er immer noch den Bug drin, dass er den Stack
verwurschtelt, wenn man in einem verschachtelten Block eine Variable
definiert? Das hat mich damals Tage gekostet.
Heutige Compiler (nicht nur der GCC, IAR macht das in sehr ähnlicher
Weise) optimieren einfach viel großräumiger, als das die Compiler von
vor ca. 20 Jahren getan haben. Die machen auch aus lesbarem C-Code
durchaus optimalen Assemblercode. :-)
Dass der AVR bei GCC eine eher untegeordnete Rolle spielt, ist ein
anderes Ding. Das liegt insbesondere auch daran, dass es keinen
gescheiten Opensource-Simulator gibt, den man den GCC-Entwicklern so
hinlegen könnte, dass sie auf diese Weise den AVR routinemäßig mit
checken können. Dadurch lassen sich Verschlechterungen im
Optimierungsverhalten nicht sofort erkennen, sondern lediglich durch
das anschließende Melden via Bugreport, was natürlich eine viel
größere Rückkopplungsschleife verursacht.