cas a 32-bit platformy

Ing. Miloslav Ponkrác postovni.holub na atlas.cz
Čtvrtek Červen 15 13:13:54 CEST 2000


Já jsem chtěl jenom upozornit, že ani norma ANSI C si nevezme na triko, že
ustanoví nějakou pevnou délku jakéhokoli typu, ať už je to char, int, long,
či čehokoli jiného. Tvůrci normy jsou chytří lidé, a vědí, že C je v
podstatě přenositelný assembler, který má být možné implementovat prakticky
na jakýkoli procesor dříve, nyní i v budoucnu. A protože se o množině všech
procesorů nedá předpokládat ani nějaká určitá délka nějakého typu, tak
moudře tvůrci normy rozhodli, že nic takového, jako je pevná délka se
pěstovat nebude.

Koneckonců žádná pevná délka není ani v normě C++, proti které je i Vaše
ANSI C dost dinosauřího ražení. (Pokud nějaká nejnovější se to nerozhodla
změnit.)

Jediné, co norma předepisuje, je minimální délka některých typů:

1) char musí mít alespoň 8 bitů. Jestli budete mít procesor, který se
rozhodne neimplementovat práce s menšími bloky, než je 16 bitů, klidně se
můžete dočkat toho, že char bude mít 16 bitů, a dle normy je to naprosto v
pořádku.

2) int musí mít aspoň 16 bitů

3) long aspoň 32 bitů

Samozřejmě, že platí takové ty vztahy, jakože délka short nemůže být větší,
než délka long, apod.

A tím jsme s normou skončili. Víc norma neurčuje.

Zajímavý je důsledek bodu 1. Pokud char bude mít 16 bitů, a třeba int 32
bitů (=4 bajty), potom sizeof(int) = 2, a věřte, že je jenom otázkou času,
kdy procesory se postupně vykašlou na to, aby jako nejmenší jednotku
zpracovávaly 8 bitů.

Miloslav Ponkrác


>Odkdy ma kniha Ritchieho neco spolecneho s ANSI C? Chci rict,
>to mam jeste porad psat
>int main(argc,argv)
>int argc;
>char *argv[];
>{
>  return 0;
>}
>
>Argumenty o tom, ze drive procesory meli jinou delku slova, jsou
>zajimave, lec otazka je, zda na soucasnou normu (ANSI/ISO) maji
>nejaky vztah. To, ze jsou pocitace binarni a ze byte ma 8 bitu, jsou
>veci, ktere sice zpocatku neplatily (viz Knuthovo "The Art of
>Computer Programming", kde jeho MIX umi pracovat s binarnim i
>dekadickym procesorem a s "bytem" o rozsahu min.64 a
>max.100), ale otazka je, zda ANSI C jeste zpetne tyto muzealni
>veci zvazuje.
>
>Rad se priucim, jak to v ANSI C je. Ovsem argumentace Ritchieho
>knihou zavadi diskusi jinam - do druhohor mezi dinosaury.




Další informace o konferenci Linux