Thomas Z. schrieb:
> Ich hatte in der Eröffnungspost geschrieben, dass ich den pointer für
> memcpy benutze. Nun habe ich allerdings bemerkt dass dies beim SDCC in
> Verbindung mit __using ziemlich ineffektiv ist.
> Ich benutze memcpy im Usb_Irq auf der Registerbank 1. Wegen memcpy wird
> dann im Interrupt zusätzlich der komplette Registersatz R0..R7 von RB0
> auf den Stack gepushed. Das passiert bei Keil nicht.
>
> Da ich immer nur 8 Bytes kopiere hab ich das dann in einer Schleife
> manuell gemacht und schon waren die Pushs für RB0 weg. Das läßt mich
> vermuten, dass SDCC nicht die Lib Funktionen kennt, und deshalb
> vorsichtshalber mal alles auf den Stack legt.
Der MCS-51-Port war der Anfang von SDCC. Er arbeitet noch immer
zuverlässig, und generiert brauchbaren Code, gefundene Bugs werden
üblicherweise in angemessener Zeit behoben.
Wenn ich den MCS-51 Port allerdings mit den Z80 und STM8 Ports
Vergleiche, fällt schon auf, dass ersterer inzwischen etwas
Nachholbedarf hat:
In der Tat generiert SDCC für MCS-51 zur Zeit oft ineffizienteren Code
als andere Compiler. Bei STM8 ist es andersrum.