Forum: Mikrocontroller und Digitale Elektronik Nach Sprung in Funktion gehen Übergabewerte von Parametern verloren


von Samuel (Gast)


Lesenswert?

Hallo,
Ich habe das Problem dass bei einer Funktion nach dem Einsprung der 
Inhalt von Paramtern verloren geht, bzw. auf Null gesetzt wird. Ich 
programmiere mit KEIL Entwicklungsumgebung auf ADuC70xx mit ARM7 kern.
Ich habe mir den zugehörigen Assemblercode einmal angeschaut, und 
festgestellt, dass beim Übergang von folgenden beiden Zeilen der Inhalt 
von Parametern verloren geht:

STMDB     R13!,{R0-R11,R14}
SUB       R13,R13,#0x0000006C

R13 ist beim ARM7 das Stackpointer register. Also ich interpretiere die 
erste Zeile so, dass R0 bis R11 auf den Stack gerettet wird.
Wieso wird dann anschließend das Stackpointerregister verändert?
Was ist das Problem dass die Inhalte der Parameter verloren gehen?
Gruß
Samuel

von (prx) A. K. (prx)


Lesenswert?

Der SUB Befehl schafft Platz für lokale Daten auf dem Stack. Zu den 
Parametern lässt sich mangels Info nichts sagen. Es wäre immerhin 
wichtig, ob die auf dem Stack oder in Registern übergeben wurden, und ob 
sich Deklaration und Implementierung der Funktion möglicherweise 
unterscheiden.

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.