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
Gast
#5216766
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.