Multiplikation/Division + Interrupt

Gast #177503
Hallo,

Sollte man bei langen (32bit) und kritischen Multiplikation/Division
die Interrupts deaktivieren oder sind keine Probleme bekannt.

Gibts es im GCC auch 16x16bit Multiplikationen mit 32 bit Ergebnis, bzw
32/16bit Divisionen oder muß man auf asm ausweichen?
Unsigned long=unsigned int* unsigned int berechnet nur einen 16bit Wert
und schreibt den dann in den long.

Danke,
  Markus
#177504
Grundsätzlich hat der Compiler dafür zu sorgen, daß alle während eines
Interrupts benötigten Register auch wieder restauriert werden.

Eine Interruptsperre ist daher nur nötig, wenn man Variablen benutzt,
die gleichzeitig auch im Interrupt manipuliert werden und nicht atomar
zugegriffen werden können, d.h. größer als 1 Byte sind.


Generell sollte man aber in einem Interrupt floating Point Berechnungen
vermeiden, da diese sehr lange dauern.


Für ein 32 Bit Ergebnis muß mindestens ein Operand auch 32 Bit (long)
sein.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.