Forum: Compiler & IDEs Lokalen Variablen und Effizienz


von H. R. (hacker_r)


Lesenswert?

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

von jö, jö (Gast)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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
Noch kein Account? Hier anmelden.