Interrupt soll register aendern (inlineassembler)

Gast #412053
Lesenswert?
• ▲
▼
Hallo,

Ich stehe vor folgendem Problem:

Ich habe eine sehr zeitkritische nichtterminierende Schleife in meinem
C-Code in Inlineassembler programmiert. Die Parameter der Schleife
haengen von einigen Registern ab. Nun will ich mittels Interrupt ein
kleines Programm aufrufen, welches diese Register modifiziert.
Leider klappt das nicht, denn mit dem Ende der interruptroutine werden
alle Rgister der urspruenglichen Funktion wieder hergestellt...

Hat jemand eine Idee oder ein Loesungsansatz...

Markus
Markus
Gast
Lesenswert?
• ▲
▼
Danke schon mal fuer die Tips...

Die Routine ist wirklich zeitkritisch, so dass jeder weitere Befehl die
Performance erheblich schmaelern wuerde...

Ueber Naked routinen hab ich auch schon nachgedacht, aber ich glaube
dann wird auch nicht die Returnadresse gespeichert.
Kann man eine Variabele auf ein Register legen und diese dann
"volatile" deklarieren ???

Wolfram hat wohl recht, ich denke schon die ganz Zeit darueber nach,
wie man das am besten loest... aber im Moment faellt mir nichts
besseres ein...

Gruss,
Markus
Gast
Lesenswert?
• ▲
▼
Der Tip mit dem naked war einguter Hinweis...
Ich habe die Interruptroutine als solche deklariert mit dem Resultat
dass keine Register gerettet werden. Dies muss ggf. selbst gemacht
werden.
So kann ich alle register aendern.
Die Ruecksprungadresse ist kein Problem wie ich anfangs vermutet habe,
da diese automatisch bei einbem Interrupt gespeichert wird und mit reti
dann wiederhergestellt wird.

Vielen Dank,
Markus
Gast
Lesenswert?
• ▲
▼
P.S. @Wolfram: Zeitkritisch hier heisst nicht, dass die eine bestimmte
Zeitdauer eingehalten werden muss, sondern dass alles so schnell wie
moeglich ausgefuert werden muss...
Sonst haette ich mir die Muehe bestimmt nicht gemacht inline Assembler
zu verstehen ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.