[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: little-endian/big-endian was Re: OS Partner www.qnx.com



Zdravim,

>  6502 asi tezko, anzto vubec neumel s 16 bitovymi cisly pracovat ;-)

   A co napr. skok na absolutni adresu?
 
| vyhodne k tomu, ze kdyz chapu urcitou adresu jako promennou, tak k ni mohu
| pristupovat jako k bytu nebo jako ke slovu bez zmeny adresy. Tedy v
| terminech C, pretypovani ukazatele na promennou z (char*) na (int*) je
| vlastne nulova operace, zatimco u motoroly se musi pricist nebo odecist 1.

   To neni pravda -- _pretypovani_ jako takove nikdy zadne jednicky
nepricita ani neodcita -- zadny programovaci jazyk, ktery znam, nedefinuje,
jakou semantiku presne ma pretypovany pointer. Pokud v Cecku pretypujete
int * na char *, tak nikdo nerika, ze dostanete zrovna nejnizsi byte,
ba naopak, prakticky kazdy prekladac proste adresu necha tak, jak je,
cimz ziskate vysledek zalezici na endianite procesoru.

| Za nizsi prehlednost binarek tedy dostavame (ne moc markantni ani uzitecnou)
| vyssi efektivitu kodu. Jinak se mi to ale stejne libi vic tak, jak to ma MC.

   Sveho casu jsem nad temito vecmi dost premyslel a dospel jsem k zaveru,
ze pro ruzne ulohy je vhodna ruzna endianita -- pro image processing se
typicky hodi big endian, pro numericke ulohy tu a tam spise little
endian. Podle mne jsou proste obe moznosti co se tyce svych vyhod
a nevyhod vyrovnane a je vcelku jedno, jakou si kdo zvoli.
 
>  Me taky. A nejlip to  ma PPC, ktery umi oba ;-)

   Ano, ale jeste hezci je v tomto ohledu UltraSparc, ktery umi adresovat
pamet a rovnou pri tom prehazovat poradi bytu -- na PPC si vice mene clovek
musi predem nakonfigurovat, v jake endianite bude pracovat.

				Have a nice fortnight
-- 
Martin `MJ' Mares   <mj@ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"If at first you don't succeed, you must be using Windows ..."