[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