X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=process.tex;h=3069d292982dddf97840eb29484c09a5d403ca41;hp=bf022ee9174a6f9bd9ba5416d5ab48028aa042cf;hb=0345bbfd866e46d3c76d0df7f37a83f9a3924926;hpb=4cef5fd8ce4bc04129a1934fa94ecb2848bcdc88 diff --git a/process.tex b/process.tex index bf022ee..3069d29 100644 --- a/process.tex +++ b/process.tex @@ -1569,8 +1569,16 @@ Uno dei punti critici dei salti non-locali variabili, ed in particolare quello delle variabili automatiche della funzione a cui si ritorna. In generale le variabili globali e statiche mantengono i valori che avevano al momento della chiamata di \func{longjmp}, ma quelli -delle variabili automatiche (o di quelle dichiarate \code{register}) sono in -genere indeterminati. +delle variabili automatiche (o di quelle dichiarate +\direct{register}\footnote{la direttiva \direct{register} del compilatore + chiede che la variabile dichiarata tale sia mantenuta, nei limiti del + possibile, all'interno di un registro del processore. Questa direttiva + origina dai primi compilatori, quando stava al programmatore scrivere codice + ottimizzato, riservando esplicitamente alle variabili più usate l'uso dei + registri del processore. Oggi questa direttiva oggi è in disuso dato che + tutti i compilatori sono normalmente in grado di valutare con maggior + efficacia degli stessi programmatori quando sia il caso di eseguire questa + ottimizzazione.}) sono in genere indeterminati. Quello che succede infatti è che i valori delle variabili che sono tenute in memoria manterranno il valore avuto al momento della chiamata di @@ -1579,7 +1587,13 @@ chiamata ad un'altra funzioni vengono salvati nel contesto nello stack) torneranno al valore avuto al momento della chiamata di \func{setjmp}; per questo quando si vuole avere un comportamento coerente si può bloccare l'ottimizzazione che porta le variabili nei registri dichiarandole tutte come -\code{volatile}. +\direct{volatile}\footnote{la direttiva \ctyp{volatile} informa il compilatore + che la variabile che è dichiarata può essere modificata, durante + l'esecuzione del nostro, da altri programmi. Per questo motivo occorre dire + al compilatore che non deve essere mai utilizzata l'ottimizzazione per cui + quanto opportuno essa viene mantenuta in un registro, poiché in questo modo + si perderebbero le eventuali modifiche fatte dagli altri programmi (che + avvengono solo in una copia posta in memoria).}.