Forum: Mikrocontroller und Digitale Elektronik ARM Instruction Set


von Dietmar (Gast)


Lesenswert?

Nach Wechsel des alten nicht mehr weiter geführten Keil-Compilers CARM
zum bei Keil nun aktuellen und von ARM übernommenen RealView-Compiler
für ARM7, hier Philips LPC2129, entdeckte ich in der Startup.s (für
RealView) folgenden Befehl, zusätzlich zu den alten Startup-Dateien, am
Ende, 2 Zeilen vor dem Sprung nach main():

    SUB     SL, SP, #USR_Stack_Size

SL ist sicher ein Register und mir unbekannt, habe aber dazu keine
Beschreibung gefunden, keine PDF, weder bei Keil noch bei ARM.

Bevor ich die Frage bei Keil poste:

Wer kann mir da mal helfen?

Gruß

Dietmar

von A.K. (Gast)


Lesenswert?

SL = Stack Limit. Synonym für R10. ARM Procedure Calling Standard.

von Dietmar (Gast)


Lesenswert?

Danke A.K. !

Wo (in welchem PDF, ARM, Keil) ist der Begriff SL dokumentiert?

R10 hat in meiner Software bisher nichts ausgemacht oder gestört.

Üblerweise, ist es mir ganz nebenbei mal zufällig aufgefallen, als ich
die alte Keil Startup mit der neueren RealView Startup verglich.

R10 wird meines Wissens im Folgenden auch nicht weiter verwendet.

Aber, was bedeutet das letztendlich jetzt für mich?

Gruß

Dietmar

von Dietmar (Gast)


Lesenswert?

Andererseits, bevor dieser Befehl ausgeführt wird:

SUB     SL, SP, #USR_Stack_Size

müßte R10 doch schon mal mit einem definierten Wert beschrieben worden
sein, sonst macht das keinen Sinn?

Gruß

Dietmar

von Dietmar (Gast)


Lesenswert?

müßte R10 doch schon mal mit einem definierten Wert beschrieben worden
sein....

Sorry, war jetzt ein Irrtum von mir, da von bekanntem SP der
USR_Stack_Size subtrahiert und in SL gespeichert wird, unabhängig wie
der Wert in SL vorher war.

Gruß

Dietmar

von Dominic R. (dominic)


Lesenswert?

Es gibt eine ganze Menge an calling-conventions, die auch die Bennenung
der Register festlegen. Einen Überblick gibt z.B.

http://www.heyrick.co.uk/assembler/apcsintro.html

Der (aktuelle?) APCS wird hier beschrieben,
http://www.arm.com/miscPDFs/8031.pdf, jedoch geht das PDF nicht auf die
Benennung der Register ein.

Viel wichtiger als die Bennenung der Register ist aber die
Vereinbarung, wer sich um das Sichern welcher Register kümmern muss,
und welche Behandlung des Stacks erwartet wird, also auch von r10. Das
sollte in dem PDF beschrieben werden.

Gruss,

Dominic

von Dietmar (Gast)


Lesenswert?

Um was man sich doch noch alles kümmern muß, haben Compilerhersteller
und neuere Schriften über Softwareentwicklung doch mal in Aussicht
gestellt, daß man sich immer mehr nur noch auf den reinen C-Sourcecode
konzentrieren kann...

Pustekuchen. Wunschdenken.

Das war früher eher einfacher, nicht umgekehrt.

Und das alles wegen ein paar Erweiterungen in der Startup-Datei.

@Dominic:

Begriffe wie APCS muß man für ARM Assembler natürlich kennen, keine
Frage.

R10 wird tatsächlich im weiteren Verlauf der Software nie mehr
verwendet, da im USER Mode. Möglicherweise dient es einer anderen
Anwendung mit der selben Startup.s.

Danke

Dietmar

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.