A já Vám děkuji za poděkování :-) Možná to tak vždy nevypadá, ale autory ta chvála dost potěší a sám vím, jak se mi nechce někomu napsat, že se mi článek líbil (kritika je jednodušší :-).
Tiez sa pridavam k chvale :-) Jeden kolega tuto vlastnost vystihuje, ze "jeden zo sto pochvali". Zato krizuje ovela viac, najhorsi su ti, co tomu vobec nerozumeju a moc si o sebe myslia. Tam je najstastnejsi, ked ich niekto zanho zotrie :-)
Zrovna clanky o FX aritmetike si vzdy len rychlo preletim, pouzival som ju v casoch, ked FPU bola skor rarita (ked vacsina ludi mala 80286 a 80386). sin() a cos() som predpocitaval (nasamploval) do tabuliek. Ale zase ten CORDIC prekvapil, nikdy som predtym prilis nerozmyslal, ako emulacia FPU pocita sin/cos (tipoval som Taylora, instrukcie FPU vyvolali exception neznamej instrukcie a tam sa spustila emulacna rutina).
Prave som si vsimol, ze tam miesam formaty. Prevod z FPU formatu do FX som tusim robil nasobenim 2^n v emulacii a zaokruhlenim (predpocitanie), zvysok uz vo FX. Nikdy nezabudnem na oblubeny hack v Turbo Pascale: v asm bloku prefix 'DB 66h' a 'DB 67h', ktory rozsiroval adresy/operandy/registre na 32-bitove v nasledovnej instrukcii ;-)
Na ty prefixy si take pamatuju, jeste se to napriklad dalo vyuzit pro instrukci MOVSD, ktera byla prakticky o 100% rychlejsi nez MOVSW. Dost me mrzelo, ze Borland nakonec neudelal skutecny 32bitovy prekladac Pascalu/Cecka pro DOS a misto toho se hned vrhli na Delphi. Ale dneska je to vlastne jedno, DOS je pryc a Borland (alespon tak, jak jsem tu firmu znal) je pryc taky.
Jj, (REP) MOVSD bol tiez moj favorit. Tiez som cakal na 32-bit prekladac, trvalo to dlho dlho. Potom som objavil Watcom C/C++ a DJGPP (odvodenina gcc), neskor aj 32-bit FreePascal, ale to ma uz Pascal nezaujimal. A este nejake speciality ako C-- (prekladac Ccka s integrovanym asm).
Kratko nato sa zacali objavovat Win 95, ktore ma (okrem ineho) nastvali tym, ze som ludom nemohol ukazovat svoje programy, pretoze polovica z nich koncila s General Protection Fault (alebo inym exceptionom). Obcas sa to dalo pochopit, pretoze som napr. pouzival detekciu procesoru cez nezname instrukcie a odchytavanie int 6 (CPUID bolo tusim az od Pentia), ale vacsinou mi nedovolili pristup ku skoro ziadnym HW portom.
Na to som vymyslel zaujimavy program - az do 80486 musela byt RAM pravidelne refreshovana, inak "vybledla". Pouzival sa na to DMA 0, default frekvencia bola tusim raz za 55 ms. Ale preprogramovat timer DMA 0 (uz si nepamatam aky obvod) mi dovolili. Bola to sranda pozerat sa, ako sa generuju nahodne chyby v dosledku nekonzistencie pamate, obcas sa nahodne menili znaky na obrazovke a skoncilo to BSODom. Polcas rozpadu bol asi tak 30 sekund :-)
Jasne, s DJGPP a pro nej postavenym vyvojovym prostredim (RHIDE) jsem udelal rocnikac. Sice s tim byly trosku problemy, protoze to vedouci projektu spoustel ve Win 95 a ja jsem pouzival SVGA. Jedinej problem byl s rychlosti prekladu a linkovani - to se s TP nedalo srovnat (i kdyz Pascal jako takovej rad nemam, ten jeden jediny pruchod je znat, zejmena pri prekladu primo do pameti bez vytvareni exace). Watcom byl takovej divnej, sly o nem famy, ze jde o nejvice optimalizujici prekladac, ale nevim, gcc mi pripadl lepsi (po spravnem nastaveni vsech voleb).
Jinak ten DMA cip byla nejaka upravena 8257, na prvnich PC to byl opravdu svab Intel 8257, potom se binarne kompatibilni obvod daval primo do cipsetu.
Ale to vsechno je uz pryc, dneska uz ani nevim, jake instrukce muj procesor umi..., naposledy jsem si hral s MMX.