Function ohne push/pop

Gast #1876518
Lesenswert?
• ▲
▼
Ich wuerde gerne vom gcc eine Interruptfunktion erzeugen lassen
die mir alle Register sichert. Es gibt dafuer das pragma saveall,
aber leider wirkt das bei meinem target=M16C nicht.

Daher wuerde ich gerne den Compiler veranlassen nichts auf dem Stack zu 
sichern um dann selber Hand anzulegen. Leider habe ich dafuer kein 
Pragma gefunden. Derzeit sichert der schlaue kleine Mistkerl leider 
immer nur die Register die er braucht, grummel...

Olaf
#1876529
Lesenswert?
• ▲
▼
Olaf schrieb:
> Ich wuerde gerne vom gcc eine Interruptfunktion erzeugen lassen
> die mir alle Register sichert. Es gibt dafuer das pragma saveall,
> aber leider wirkt das bei meinem target=M16C nicht.
>
> Daher wuerde ich gerne den Compiler veranlassen nichts auf dem Stack zu
> sichern um dann selber Hand anzulegen. Leider habe ich dafuer kein
> Pragma gefunden. Derzeit sichert der schlaue kleine Mistkerl leider
> immer nur die Register die er braucht, grummel...
>
> Olaf

Dafür war AFAIK das Attribut naked vorgesehen.
Gast #1877335
Lesenswert?
• ▲
▼
> Weiß ned ob dir das jetzt weiter hilft, aber trotzdem:

Kucke ich mir heute Abend mal an...

> Dann musst du wohl den/die Maintainer des GCC-Ports für deinen
> Prozessor mal nerven,

Hey, gute Idee. DJ Delorie hat bestimmt nichts zutun. :-)

> Am besten natürlich, du produzierst den Patch dafür gleich selbst...

Darueber hab ich auch schon nachgedacht. Ich weiss aber nicht ob ich das 
mal eben so schaffe. Der Source des gcc ist ja aeh..gewaltig...
Da haette ich ein bisschen Angst was zu uebersehen das nur unter ganz 
bestimmten Umstaenden meinen Code kaputt macht wenn man sich da nicht 
laenger einarbeitet.

Ich hatte gestern schon angefangen meine Interruptfunktion komplett in 
Assembler zu schreiben. Wenn es wirklich ernst wird hilft nur 
Maennersprache(TM).

Wie kann es eigentlich sein das einige targets sowas unterstuetzen und 
andere nicht. Man sollte doch meinen das 'naked' mit als erstes 
rueberkommt wenn man einen neuen target ableitet und 'saveall' mit als 
erstes implementiert wird, bevor man sich ernsthaft daran macht 
nachzuhalten welche Register jetzt in einer Funktion benoetigt werden.


Olaf
Moderator Persönliche Seite #1877399
Lesenswert?
• ▲
▼
Olaf schrieb:
> Wie kann es eigentlich sein das einige targets sowas unterstuetzen und
> andere nicht.

Weil die ganze Prolog- und Epiloggeschichte halt target-abhängig ist.

Warum man natürlich dann "naked" nicht portiert, das musst du wohl
wirklich DJ Delorie fragen.  Der Aufwand sollte sich ja (im Vergleich
zum korrekten Prolog/Epilog) in Grenzen halten.

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