Witam, czy da się jakoś zapisać kod w C, aby otrzymać liczbę dwubajtową unsigned short z dwóch liczb unsigned char tak, aby kompilator wygenerował jak najmniej kodu. Np: unsigned short wValue; unsigned char byValue1, byValue2; wValue = (byValue1<<8) | byValue2; albo wValue = (byValue1<<8) + byValue2;
promują byValue1 oraz byValue2 do liczby unsigned short potem je ORują ze sobą, a przecież wiadomo że byValue1 ma trafić na starszy bajt wValue, a byValue2 na młodszy i to wszystko.
Są jakieś makra jak np: HIBYTE(wValue) = byValue1; LOBYTE(wValue) = byValue2; dzięki którym kompilator by wpisywał wartość do odpowiedniego rejestru, albo komórki pamięci? Ja nie znalazłem, albo przegapiłem (jeśli w ogóle coś takiego istnieje). Może Ktoś z Was zna rozwiązanie. Po prostu wkurza mnie, że zawsze brakuje FLASHa, a kompilator dodatkowo generuje niepotrzebny kod, tymbardziej w takich prostych przypadkach.
Mariusz