La parola chiave FAR usata in C e C++ a cosa serve? e come la posso sostituire?
La parola chiave FAR usata in C e C++ a cosa serve? e come la posso sostituire?
Nei sistemi a 32 bit, non c'è più alcuna distinzione tra un puntatore NEAR e FAR .... anzi tali termini dovrebbe essere ignorati, se non sbaglio.Originariamente inviato da ojalà
La parola chiave FAR usata in C e C++ a cosa serve? e come la posso sostituire?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
In Win32 e' una keyword obsoleta. Era usata nella programmazione a 16 bit quando l'accesso alla memoria era segmentato.
Vorrei sapere qualcosa in piu'
Le differenze tra un puntatore normale, uno near e uno far...
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Un puntatore e' un contenitore per un indirizzo di memoria.
Devi quindi studiare come la memoria veniva indirizzata quando le CPU operavano in modalita' "reale" (con il DOS per intenderci), ovvero a 16 bit "segmentata" e come, invece, la memoria viene indirizzata se la CPU lavora in modalita' "protetta" a 32 bit (con Win32 ad esempio ...) e in cui il concetto di segmento e' diventato inutile perche' la sua grandezza e' diventata pari a tutta la memoria utilizzabile.
E se vogliamo fare i fini, si dovrebbe dire che in modalità protetta a 32 bit i segmenti esistono ancora sempre. I registri di segmento CS, DS, ES ec... vengono ovviamente ancora usati. Il fatto è che sarebbe (ed è in effetti) scomodo usare indirizzi a 48 bit (16 di segmento + 32 di offset), motivo per cui nei sistemi operativi a 32 bit che girano su processori x86, si fa una cosa molto semplice: si fa in modo che i registri di segmento facciano riferimento a dei descrittori di segmento che mappano l'intera area di indirizzamento lineare in modo "sovrapposto" (quello che "vedo" tramite CS lo vedo anche tramite DS, ecc....).
In pratica così i segmenti vengono ignorati e trascurati e si usa solo l'offset a 32 bit per ottenere quello che si chiama indirizzamento "flat" (piatto). Poi per le protezioni sulle aree di memoria si usa il sistema di paginazione.
Non mi aspetto che sia chiaro a tutti .... chi non ha capito alzi pure la mano...![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Corretto ... e infatti avevo detto che " il concetto di segmento e' diventato inutile " non che non esiste piu' ...Originariamente inviato da andbin
E se vogliamo fare i fini, si dovrebbe dire che in modalità protetta a 32 bit i segmenti esistono ancora sempre.
E il loro contenuto e' il "selettore" (appunto per capire che e' un qualcosa di diverso dal segmento ...).I registi di segmento CS, DS, ES ec... vengono ovviamente ancora usati.
In ogni caso, mi associo ad AndBin, confermando che il tutto non e' semplice da spiegare in un messaggio e che le cose che stanno "attorno" alla gestione della memoria di una recente CPU Intel sono tante e tutte "connesse" tra loro per ignorarne una parte ...
Ehm...
oh si certo ho capito tutto chiarissimo
eh si come noVVoVe:
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog