Forum: PC-Programmierung Vergleich zweier uint8 mit uint16 Konstante?


von Wiesel (Gast)


Lesenswert?

Hallo zusammen,

ich hab mich gefragt welche dieser beiden IFs auf meinem STM32 wohl 
effizienter ist.
1
 if (u8_value1 == 0x12 && u8_value2 == 0x34)
2
{
3
}
1
 if ( (uint16_t) ((u8_value1 << 8) + u8_value2) == 0x1234)
2
{
3
}

Funktionieren würde doch beides, oder?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sieh Dir den erzeugen Assemblercode beider Konstrukte an, dann kannst Du 
es selbst herausfinden.

Üblicherweise sind Compiler nicht blöd und können Operationen mit 
konstanten Werten ziemlich gut optimieren.

von Wiesel (Gast)


Lesenswert?

Du hast Recht. Mein GCC erzeugt aus beiden Varianten Assemblercode (bzw. 
die erzeugten .lst Files sind identisch). :)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wiesel schrieb:
> Mein GCC erzeugt aus beiden Varianten Assemblercode

Ich vermute, daß Du schreiben wolltest den gleichen.

> (bzw. die erzeugten .lst Files sind identisch). :)

von Wiesel (Gast)


Lesenswert?

Rufus t. Firefly schrieb:
> Ich vermute, daß Du schreiben wolltest den gleichen.

Du hast absolut Recht. Das passiert wenn man beim Schreiben eines Satzes 
in Gedanken schon beim nächsten ist :)

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.