| non più per trabocco della variabile, ma per il
fatto che essa è sottoposta alla divisione per 55 (per calcolare il tempo
base di 1 ms per la
Delay) e, se la velocità del processore è troppo elevata, il
risultato della divisione può essere più grande di quello massimo
ospitabile nel registro chiamato a memorizzare il quoziente, provocando
la generazione di un errore. |
| l'errore corretto dovrebbe essere, allora,
Divide Overflow, ma la Borland lo
spaccia per errore
Divide by 0 (appunto
Runtime Error 200) perchè nella normale programmazione in
ambiente Turbo Pascal l'unico modo per incorrere in
trabocco di divisione è appunto dividere
per 0. |
| siccome la CPU prevede un
registro a 16 bit per il
quoziente della divisione di un numero a
32 bit (come la nostra variabile-contatore)
il numero massimo in esso ospitabile è 216=65536. |
| poichè il numero conservato nel
registro del quoziente corrisponde a
1/55 del numero massimo di cicli di istruzioni
eseguibili senza errore, tale numero massimo è: 65536*55=3604480 |
| nell'arco del tempo previsto ogni
ciclo d'istruzioni durerà dunque 55 ms/3604480=
15.26 ns. |
| con la precedente ipotesi di 4
cicli T per ogni sequenza, la durata del
ciclo T è dunque di (15.26ns/4=) circa
3.815 ns, pari ad una frequenza di 262 MHz. |
| Si può concludere che che la divisione per 55 del
registro quoziente a 16 bit provochi
errore di Overflow non appena la
velocità del processore supera i 262 Mhz (naturalmente nei limiti delle
approssimazioni e nella veridicità delle ipotesi fatte). [segue] |