Was Register zu retten, in den ARM C-Aufrufkonvention?

Es ist schon eine Weile her, seit ich das Letzte codiert, arm-assembler, und ich bin ein wenig eingerostet auf die details. Wenn ich den Aufruf einer C-Funktion von arm, ich habe nur sorgen zu machen über das speichern von r0-r3 und lr, richtig?

Wenn die C-Funktion verwendet, alle anderen Register, ist es verantwortlich für das speichern dieser auf dem stack und der Wiederherstellung Sie? In anderen Worten, würde der compiler code generieren, um dies zu tun, für C-Funktionen.

Zum Beispiel, wenn ich mit r10 in eine assembler-Funktion, die ich nicht schieben muss seinen Wert auf dem stack oder in den Arbeitsspeicher und pop/wiederherstellen, nachdem eine C nennen, tun ich?

Dies ist für arm-eabi-gcc 4.3.0.

InformationsquelleAutor richq | 2008-11-04
Schreibe einen Kommentar