Hi ich errinere mich an so ein Satz wie: lokalen variablen in einer Funktion sollten die Breite der Prozessor register entsprechen weil sonst wurde eine 8 bit Variable in ein 32 bit Register geschrieben, modifiziert und ausmaskiert. Gilt das noch im allgemeinen und für STM32 ARM Cortex ? (IAR) Danke
Ob die Variable im Register oder aufm Stack landet, entscheidet der Compiler. Die beste Perfomance für alle Variablen erhälst du bei 16Bit und aufwärts CPUs, wenn du >int< verwendest.
H. R. schrieb: > Gilt das noch im allgemeinen und für STM32 ARM Cortex ? (IAR) Ja. Gilt für alle Architekturen, die Register nur in voller Breite ansprechen können (oder nicht unter 32 Bits bei 64-Bittern). Also für sämtliche ARMs, aber nicht für x86-64. Allerdings kann man auch stdint.h Typedefs wie int_fast8_t verwenden. Die eignen sich auch für 8-Bitter. Da erhält man dann 32 Bits bei ARM, hingegen 8 Bits bei AVR.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.