[elektro] 8bit->32bit
Arnold Fuzesi
arnold.fuzesi.lista at gmail.com
Wed May 8 10:27:34 CEST 2013
Koszi, tisztabb lett a kep!
Erdekes ez a bitfield dolog, kerdezhetnem akkor miert eroltetik ha implementacio fuggo. Plane h adott procin ket kulon compiler akar forditott bitsorrenddel is dolgozhat.
Valszeg ott a hiba, hogy nem hw regiszter megfeleltetesre lett kitalalva, hanem kodtomorseg miatt. Az mas kerdes, hogy eloszeretettel hasznalja mindenki hw regiszterekkel / kommunikacios protokolokkal (mappolasra), es union-okkal.
Arnold
Sent from my iPhone
On 2013.05.08., at 5:54, Ábrahám Gábor <agabor2 at freemail.hu> wrote:
> A bitmező definit módón implementáció függő,
> ezért legjobb nem használni. Én inkább írok makrókészlet
> set_valami(x) x |= (1<<5);
> clr_valami(x) x &= ~(1<<5);
> inv_valami(x) x ^= (1<<5);
> is_valami(x) (x & (1<<5))
>
>
> Ha megnézel egy hálózati software forrást
> pl. egy IP protokollét, mindenütt htonl() , htons(), illetve
> ntohl(), ntohs() és hasonló makrókkal konvertálnak
> hoszt és hálózati bájtsorrend között. A makrók persze
> fordítástól függően üresek, ha az adott környezetben nincs szükség
> konverzióra.
>
> További ötletek:
>
> Writing endian-independent code in C
> <http://www.ibm.com/developerworks/aix/library/au-endianc/>
>
>
> Időtlen időkkel ezelőtt felmerült, hogy kell csinálni egy terminált,
> ahol az X11 a grafikus kártyán fut. Akkor sokat olvasgattam az
> X forrását. Nagyon tanulságos.
> A make először lefordít egy kis programot. kb :
>
> main()
> {
> int x = 1;
>
> if (*(char *)&x == 1)
> printf ("#define little-endian\t1");
> else
> printf("#define little-endian\t0");
> }
>
> Ezt lefuttatja és beleirányítja az endian.h nevű file-ba.
> Ez aztán szerepel mindenhol.
>
> Indiánságon kívül remek szívási lehetőség az alignmnet és a
> packed, unpacked struktúrák.
>
> <http://en.wikipedia.org/wiki/Data_structure_alignment>
>
>
> Szép feladat az eredetileg gépfüggőre írt kód portolása.
> Crash-ről crash-re, ahogy a kollégám mondta.
>
> Vannak átkapcsolható CPU-k, amik tudják a kicsit is, meg a nagyot is (az
> XScale pl.).
> Na ezzel lehet igazán nagyot szívni.
>
> Gábor
>
>
>
> ----- Eredeti üzenet -----
> From: Fuzesi Arnold
> Sent: Tuesday, May 07, 2013 10:55 PM
> To: elektro at tesla.hu
> Subject: [elektro] 8bit->32bit
>
> portolnom kellene AVR-rol ARM-re egy böszme kódot.
>
> Nagyjabol látom mik a buktatók, de szivesen veszek tanacsot, ha valakinek
> van
> keznel, mire kell nagyon figyelni, ami nem trivialis feltetlen.
>
> Elso korben a bitmező union stb hogyan is alakul? Ha jol remlik ez pl
> "cikis"
> kategoria...
>
> A jobbra-balra igazitas fordito fuggo, vagy definit?
> A lentit lehet úgy írni, hogy "portable" legyen ha nem definit?
>
> pl:
> union{
> struct{
> ulong in1_act :1; //LSB
> ulong in1_res :1;
> ulong in2_act :1;
> ulong in2_res :1;
> ulong in3_act :1;
> ulong in3_res :1;
> ulong in4_act :1;
> ulong in4_res :1;
> ulong sw_act :1;
> ulong sw_res :1;
> ulong auto_test_act :1;
> ulong auto_test_res :1;
> ulong Vin_err_act :1;
> ulong Vin_err_res :1;
> ulong tmp1_err_act :1;
> ulong tmp1_err_res :1;
> ulong tmp1_low_act :1;
> ulong tmp1_low_res :1;
> ulong tmp1_high_act :1;
> ulong tmp1_high_res :1;
> ulong tmp2_err_act :1;
> ulong tmp2_err_res :1;
> ulong tmp2_low_act :1;
> ulong tmp2_low_res :1;
> ulong tmp2_high_act :1;
> ulong tmp2_high_res :1; //MSB
> }b;
> ulong W;
> }flag_gprs;
>
> köszi,
> A.
>
> -----------------------------------------
> elektro[-flame|-etc]
>
> -----
> A(z) üzenetben nem található vírus.
> Ellenőrizte: AVG - www.avg.com
> Verzió: 2013.0.2904 / Vírus adatbázis: 3162/6272 - Kiadás dátuma:
> 2013.04.25.
> A belső Vírusadatbázis elavult.
>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list