Ano. Hlavnim duvodem, proc tomu tak stale je, je takzvana trampolina - zvyk gcc (a patrne i jinych prekladacu) ukladat na zasobnik kratke kusy kodu napriklad pro obsluhu signalu. Na odstraneni se pracuje. Jakmile bude hotovo, jsou dve reseni jak zvednout odolnost systemu - no-exec bit strankovaci tabulky (Moderni procesory tuto sikovnou vecicku uz maji. IMHO ji mela mit uz i386, ale asi se na ni nedostalo.) a snizeni nejvyssi spustitelne adresy zkracenim code segmentu (Tim se zabrani nejvetsimu problemu - zasobniku. Na spousteni dat to moc nepomuze.)
Oddeleni adresovych prostoru by pochopitelne bylo rovnez resenim a Intel to tak puvodne myslel, ale jak uz jsem rekl malokdo je ochotny smirit se s pointerem delsim nez integer a dvakrat pomalejsi pointerovou aritmetikou.