Hallo zusammen,
gibt es eine Möglichkeit (z.B. ein Intrinsic, das ich nicht gefunden
habe), dem ARM-GCC beizubringen, einen Überlauf einer Addition mit
Unsigned Integer einfach über das Carry-Bit zu machen, ohne Overhead zu
erzeugen?
Quasi das hier in minimaleffizient:
Allerdings richtet der GCC den Stack bei test1 nicht korrekt aus; wenn
do_some_fast_operation_with_nebeneffekt ein 8-Byte-Alignment braucht
gibt es einen Absturz. Habe auch nicht herausgefunden wie man dem GCC
beibringt dass ein Inline-Assembler-Block einen Funktionsaufruf enthält
und daher Alignment nötig ist...
Niklas G. schrieb:> Wenn der eine Takt wirklich so wichtig ist
Hallo Namensvetter,
ich zähle jetzt zwei Takte Unterschied - aber nein: So wichtig, dass der
Mehraufwand für Assembler gerechtfertigt wäre, sind mir diese zwei Takte
nicht. Zumindest nicht heute. Mich interessiert nur die Möglichkeit.
Und ich will noch nicht so recht wahrhaben, dass der nicht-seltene
Anwendungsfall "Überlauferkennung" von den Compilerbauern einfach so
links liegen gelassen wurde.
Viele Grüße
W.T.
Ich hatte mal das Problem, dass sich eine Delay() Funktion (ja man
braucht so was ohne Timer hin und wieder doch mal) ständig anderes
verhielt. Das ging soweit, dass eine Programmänderung an einer ganz
anderen Stelle auf einmal die Laufzeiten der Delay-Funktion grob
veränderten. (Alle ohne jeden Interrupt oder DMA dazwischen). Am Ende
stellt sich raus, dass das wohl mit dem Flash Waitstates und Cachings zu
tun hatte, denn es war davon abhängig an welchen Adressen im Flash am
Ende der Codeschnipsel oben landete. Das align 4 hat mein Problem
jedenfalls gelöst.
temp schrieb:> meinst du sowas:
Nein, ich meinte das Alignment des Stack Pointers ("SP"). Bloß was für
Füll-Bytes produziert der Assembler an der Stelle? Die werden ja vom
Prozessor als Instruktionen interpretiert...
Walter T. schrieb:> Und ich will noch nicht so recht wahrhaben, dass der nicht-seltene> Anwendungsfall "Überlauferkennung" von den Compilerbauern einfach so> links liegen gelassen wurde.https://godbolt.org/z/K1DpyW
So ganz links liegen gelassen haben die das wohl doch nicht.
Oliver