Oh, Danke für die Info, das der Speicher von nicht verwendeten Registern
im Ram "frei" ist, wusste ich gar nicht. In den Dokumentationen welche
ich bis jetzt durch habe wird überall erwähnt das die Registerbänke auf
der Adresse 00h – 1Fh liegen, daraus schloss ich das diese sowieso
Reserviert sind und nicht zB. für Variablen verwendbar sind. Da es aber
immer möglich ist (wenn ich mich nicht irre) entweder auf das Register
direkt oder über die Speicheradresse zuzugreifen, dürfte es bezüglich
der Registerbänke keine Probleme geben, wenn ich dies im Code
berücksichtige. Das wiederum würde dann bedeuten dass man, abgesehen von
der etwas schwereren Lesbarkeit des ASM Codes, den Vorteil der
Geschwindigkeit habe (Wenn ich alle 8 Register speichern müsste). Sehe
ich das richtig?
In C (Keil, Parameter using) würde dies ja der Compiler bezüglich der
Adressierung selbst erledigen?
Und gleich noch eine Frage: Wenn ich in ASM programmiere weis ich im
Normalfall welche Register benötigt werden und kann gegebenenfalls nur
das eine auf den Stack legen. Wie ist das in C oder konkret beim Keil
hier weis ich nicht welche Register er verwendet, ist er so intelligent
und Speichert die Register auf dem Stack, welche er braucht, oder
speichert er immer alle oder habe ich sowieso nur die Möglichkeit mit
einem Bankwechsel mein Register zu schützen?
Fragen über Fragen :-)
Rudi