c přižezení adresy do ukazatele
Jan Waclawek
konfera na efton.sk
Čtvrtek Duben 10 11:02:31 CEST 2014
Prenositelna varianta je "manualne" zlozit zdrojove byty, previest
operaciu, a potom ich "manualne" rozlozit, nieco ako
#include <stdint.h>
typedef struct {
uint8_t a;
uint8_t b;
} bla_t;
bla_t t;
{
uint16_t tmp;
tmp = t.a + 256 * t.b;
tmp = (tmp << 1) | (tmp >> (16 - 1));
t.a = (tmp >> 0) & 0xFF;
t.b = (tmp >> 8) & 0xFF;
}
Toto pre pravoverneho ceckara vyzera trapne (a ano, da sa to napisat do
jedneho riadku :-) ), ale slusny prekladac to neprelozi horsie ako ked sa
pouzije type punning.
Aby nedoslo k omylu, aj ja bezne pouzivam type punning v oboch podobach, aj
ked sa mi viac paci ten union... (dalsi namet pre psychologicku analyzu
mojho vztahu k C...) ;-)
wek
----- Original Message ---------------
>>Dne 10.4.2014 8:31, Miroslav Draxal napsal(a):
>>>
>>> Ale né, tady je to zámìr. Mam dva byty v (v unionu struktura dvou
>>> charu, vím ¾e pøekladaè si je mù¾e hodit kam chce, ale HiTech ty dva
>>> byty dr¾í dùslednì vedle sebe) potøebuji k nim pøistupovat jako
>>> k charum pro úsporu místa a hlavnì rychlosti. Pak to celé potøebuji
>>> zarotovat. Tak¾e proto ten na int a jednodu¹e s tím zarotovat a pak
>>> zase pøístup pouze k charùm. Ten výsledný kód potom vypadá skoro
>>> pøesnì tak, jak bych to udìlal v asm.
>>>
Další informace o konferenci Hw-list