[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Little endian (Was: Re: Zvuky (???))
> > Pojem "intel bytes" je nesmysl, nebot razeni samotnych bitu v bajtu je
> > samozrejme vsude stejne. Pokud uz bych chtel nejak vysvetlit rozdil mezi
> > little a big endian, tak bych musel ono cislo tisic nejdriv prevest do
> > takoveho formatu, aby bylo zrejme razeni bajtu! (1000=03E8h)
>
> Vazne, ono by bylo nejlepsi pouzit dvojkovou soustavu, kdyz uz jsme
> u toho, ale zacinam mit dojem ze nechapes co je jednoduchy a snadno
> pochopitelny priklad - aneb jak vysvetlit rozdil mezi little a big
> endianem na jeden radek. He?
>
> > Motorola nepouziva logictejsi razeni bajtu. Jednoduse pouziva jine
> > razeni bajtu. O logice se nema smysl bavit, nebot oba zpusoby ukladani
> > vicebajtovych slov v pameti maji sve vyhody i nevyhody.
>
> Vazne ti pripada logicky, ukladat nejvyznamnejsi bit na posledi pozici?
Tohle nemohu neokomentovat. Ano, i little endiand razeni MA sve vyhody.
Priklad v 68k asm:
udelam si short integer promennou
promenna ds.w 1
nactu ji jako word
move.w promenna,d0
muze se ale i hodit ji nacist jen jako byte, jenze jsme na big endianu a
musime
udelat :
move.b promenna + 1,d0
Ted si predstav, ze casem zmenim velikost promenne na long word.
A pak musim i prepsat VSECHNY mista, kde si promennou pretypovavam.
takze:
move.b promenna + 3,d0
Mozna si rikate co je to za blbej priklad, ale kdyz se vezme v uvahu,
ze je VZDY vyhodnejsi mit promennou jako long word (kvuli 4 byte
alignu), ale pritom z ni nacitam jen hodnoty wordu....
Nebo kdyz mam v long wordu fixed point 16:16 cislo a na intelu
staci. mov ax,[bp]
a v tu ranu mam celociselnou cast...
Navic mi staci JEDEN jediny pointer na promennou a mohu ji nacist
VSEMI velikostmi (od byte po long word)
priklad
mov al,byte ptr[esi]
mov ax,word ptr[esi]
mov eax,dword ptr[esi]
No proste je lepsi se na chvili zamyslet nad obema stranama, nez
mavnutim ruky jednu odsoudit ze je uplne blba.
regardz, Fido