>Ty guard pages --- to mi pripomina, jak jsem portoval gcc na OS/2.
>Guard pages jsou strasna prasarna, ktera komplikuje kompilaci kodu
>--- pokud funkce obsahuje lokalni promenne delsi nez jedna stranka,
>tak hrozi, ze sahne o dve stranky pod posledne namapovanou stranku
>zasobniku a cely program spadne. Proto se do ramu musi na kazdou
>stranku napsat. Totez plati pro alloca --- je treba se dotknout
>tech alokovanych mist v sestupnem poradi.
ano. kazdopadne toto je zalezitost prekladace a vetsinou se resi nejakymi
pomocnymi fcemi v prologu (treba check_esp), ktere manuelne donuti
stack expandovat. nerikam, ze je to koser, nicmene -
mit vice jak 4 kila na zasobniku, to uz o necem svedci. nevim, mozna jsem
prilis ovlivnena kernel modem, ale tam je stack maximalne 12 kilo velky a
kdyz jste nekde hluboko v i/o stacku, nemuzete si se zasobnikem dovolit
moc. ale od toho tu je preci bss sekce (pridat static).
mit tolika mista lokalne ve fci spise (IMHO) ukazuje, ze by mela byt
rozdelena na vice podfci, kde onen problem odpada ...
>Na Linuxu to potreba neni, ten vzdycky alokuje a namapuje pamet pri
>page faultu nad esp.
pamet prideli kdekoliv, nebo pouze v rozsahu zasobniku? rozsah zasobniku
je nekde zapsan? treba v pe filu je polozka commit/reserve co se tyce
zasobniku.
Názor k článku
Programujeme v jazyce Assembler v Linuxu: Úvod
Ivona Prenosilova (neregistrovaný)
2. 7. 2004 14:42

