Nach Sprung in Funktion gehen Übergabewerte von Parametern verloren

Gast #1180435
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
#1180460
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren