[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 ..."