Sezione |
Indirizzi Base
Registri Interni
|
Capitolo 1 |
Il Processore e il Debugger |
LA GRANDE LIBRERIA 5/9 [56 di 60] |
|
|
Rimane da capire perchè i progettisti dell'80x86 hanno voluto ricorrere a questo complicato meccanismo, per poter rendere disponibili le risorse di sistema. | |
La prima risposta è funzionale: al programmatore non serve ricordare l'improbabile, grosso (4 bytes...), numero esadecimale associato all'indirizzo logico della procedura di cui ha bisogno, e non gli importa neppure sapere in quale tipo di memoria (rom se legata al bios o ram se proveniente da SysOp o da drivers) sarà pescata.. | |
Per esempio se abbiamo bisogno delle procedure che controllano il video chiameremo INT 10H, e il servizio sarà garantito indipendentemente dal punto della memoria in cui il processore si troverà a lavorare; questo esempio è particolarmente significativo perchè sottolinea un'altra potente caratteristica della Tabella dei Vettori: la rilocabilità del servizio. |
|
In pratica la procedura di Boot è a conoscenza della zona BIOS in cui il servizio è garantito d'ufficio (è impensabile che il costruttore non abbia previsto gli strumenti necessari per scrivere messaggi a video..) e, non appena l'ha localizzata, ne trasferisce l'effettivo indirizzo in Tabella; ma quando il Sistema Operativo (che le subentra) si accorge della presenza di una moderna scheda video, sul bus AGP o PCI, provvederà ad installarne il driver in memoria e a metterlo in esecuzione. | |
La presenza attiva del nuovo driver video renderà disponibile una propria procedura, ovviamente alternativa a quella di default e allocata in indirizzi propri della scheda video; per renderla disponibile a chiunque ne abbia bisogno, il driver stesso andrà a sostituire il vettore originale di default con quello nuovo di zecca, relativo alla memoria rom presente sulla scheda SVGA. |
|
Dunque: l'uso di numeri a 8 bit (da 00H a FFH) virtualizza l'accesso alle possibili procedure di sistema (i libri della grande libreria), cioè ne consente l'uso anche senza la necessità di conoscerne l'effettivo indirizzo. |
|
Ma il vero problema è un altro! Come è facile pensare, la quantità di codice macchina necessario per sviluppare un determinato servizio può subire, con il passare del tempo, una prevedibile dilatazione dovuta per esempio all’evoluzione tecnologica; si pensi emblematicamente alle modifiche subite dalla procedura che si occupa degli Hard Disk, chiamata molti anni fa a gestire memorie di massa da 20-40 MBytes e ora orientata al servizio di HD con capacità superiore ai 100 GBytes!! | |
Dopo ogni modifica, se possiamo ritenere che il puntatore (Vettore) a questa procedura sia rimasto inalterato, dobbiamo renderci conto che l'aumento del suo numero di istruzioni ha spostato inevitabilmente verso il basso gli indirizzi iniziali di ciascun'altra procedura di servizio successiva. | |
Tutti si incrementano di un numero pari a quello dei bytes aggiunti alla prima; tutti i Vettori di queste procedure dovranno essere cambiati! |
|
Poichè gli aggiornamenti del BIOS (ma anche quelli di un Sistema Operativo) sono imprevedibili e molto frequenti, l'indirizzo fisico (puntatore, Vettore) effettivo di ciascun libro può subire variazioni in ogni momento; per non parlare dei possibili diversi produttori di BIOS e di schede madri, ciascuno dei quali sarà chiamato a garantire il servizio a partire dagli oggetti da lui prodotti, inevitabilmente diversi da quelli della concorrenza... |
|
L'accesso alle procedure di sistema (i libri della grande libreria), non può assolutamente essere eseguito saltando direttamente al rispettivo indirizzo: esso non è per nulla stabile nel tempo e la sua precarietà renderebbe inaccessibile la risorsa. |
|
L'uso della Tabella dei Vettori risolve per sempre questo problema: la risorsa desiderata si ottiene (tramite INT xyH) specificandone il numero , assolutamente stabile e riconosciuto da tutto l'ambiente (produttori e programmatori). | |
Sarà compito del produttore del BIOS (o del sistema operativo, o del driver) scrivere in tabella i giusti indirizzi delle procedure di sistema, probabilmente diversi da quelli della versione precedente, ma sicuramente associati agli stessi numeri esadecimali xyH. |
|
Per la descrizione dettagliata del contenuto e dei segreti della Tabella dei Vettori si rimanda all'apposita scheda; uno dei primi programmi che realizzeremo, non appena avremo sufficiente autonomia, sarà proprio Tabella.ASM, con il quale cercheremo di visualizzare il contenuto di questa preziosa area di memoria di sistema. | |
Se lo desideri puoi comunque levarti fin d'ora questa curiosità scaricando qui e provando la versione offerta dell'Autore, Tabvett.COM. |
|
Capitolo 1 | LA GRANDE LIBRERIA 5/9 | |||||||
56 di 60 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|