mikrocontroller.net

Forum: Compiler & IDEs Function ohne push/pop


Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lukas K. (carrotindustries)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm..klingt gut, aber leider....

ticker.h:7: Warnung: »naked« attribute directive ignored


Olaf

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß ned ob dir das jetzt weiter hilft, aber trotzdem:

Ein Beispiel ist zu finden im Source-Code von GOS
Beitrag "Re: GOS: einfacher preemptive multitasking scheduler"


GCC Function-Attributes
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Olaf schrieb:
> ticker.h:7: Warnung: »naked« attribute directive ignored

Dann musst du wohl den/die Maintainer des GCC-Ports für deinen
Prozessor mal nerven, dass sie sowas implementieren.  Am besten
natürlich, du produzierst den Patch dafür gleich selbst...

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luk4s K. schrieb:
> Dafür war AFAIK das Attribut naked vorgesehen.

er will aber
> Ich wuerde gerne vom gcc eine Interruptfunktion erzeugen lassen
> die mir alle Register sichert.

naked macht genau das gegenteil, es sichert keine Register

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:

> naked macht genau das gegenteil, es sichert keine Register

Du musst Olafs Frage aber auch bis zu Ende lesen:

Olaf schrieb:
> Daher wuerde ich gerne den Compiler veranlassen nichts auf dem Stack zu
> sichern um dann selber Hand anzulegen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.