Prefixy -=-=-=-=- "Today's robots are very primitive, capable of understanding only a few simple instructions such as 'go left', 'go right', and 'build car'." --John Sladek Intel pro přidání 32bitových instrukcí použil takzvaný prefix. To je věc, která se napíše před instrukci a ta se rázem změní z 16ti bitové na 32 bitovou. Provedení tohoto prefixu ale trvá celý takt. Tím pádem 32 bitové sčítání je dvakrát pomalejší. Na pentiu navíc tyto instrukce nemohou do druhé pipeliny a proto je provádění kódu s prefixy až několikanásobně pomalejší. Situace je ještě horší u novějších procesorů. Aby toho ale nebylo dost, vyvojáři Intelu se rozhodli toto nějak obejít. Přidali ještě možnost nastavit kusu kódu (segmentu) příznak, který určuje, jestli kód je 32 bitový. Pokud je tento příznak nastaven, instrukce jsou automaticky 32 bitové (nepotřebují tedy prefix). Naopak 16ti bitové instrukce ale prefix potřebují. Tím pádem naopak sčítání v 16 ti bitech je zcela nelogicky dvakrát pomalejší, než 32 bitové. To má první praktický dopad pro programování. Narozdíl od například Borland C, GCC generuje 32 bitový kód. Proto je i velikost intu 4 bajty. Provádění kódu obsahující inty by tedy být přibližně stejně rychlé v Borland C i GCC pouze s tím rozdílem, že v případě GCC budou všechny výpočty 32 bitové a budou brát tedy větší čísla. Není to úplně pravda. 32 bitové programy většinou dneska běží o něco rychelji, protože novější procesory jsou výrazně rychlejší v případě 32 bitového kódu. GCC navíc lépe optimalizuje. Na druhou stranu ale 386 (zejména SX) chroustá 32 bitů pomaleji. Shorty a longy ale zůstávají na obou překladačích stejné (16 a 32 bitů) proto kód používající shorty je na BC ryhlejší a naopak kód používající longy je rychlejší na GCC. Z toho lze vyvodit, že by se člověk měl snažit používat všude 32 bitové hodnoty, pokud možno nepoužívat shorty a nahradit je intama. Přesto, že to vypadá neuvěřitelně, pomůže to. Dokonce i proměné typu char (8 mi bitové) potřebují prefix. Proto je často lepší počítat v intech. Není to ale už úplně pravidlem, protože 8mi bitových regitrů je více, než 16ti bitových a 32 bitových a proto se někdy ušetří práce ze zásobníkem. Prefix pro 8mi bitové instrukce je také na Pentiu a PentiuPro rychlejší, než prefix pro 16ti bitové instrukce. V případě použití polí to také může být úplně jinak. Někdy se pole shortů či charů ještě vejde do cache (která je na pentiu 4KB) zatímco inty už ne. Přístup do takové paměti je potom pomalejší. Tady nezbýva, než experimentovat. výheň