Download: SmartPatch020.lha

Versione: 0.3 (28-05-2022)

Requisiti: Harddisk, cpu 68020/68030, Amiga OS 3.0+, Fast Ram

Contatti: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

 

SmartPatch020 è un programmino a riga di comando che se invocato si installa sulla dos.library al posto della funzione LoadSeg() e intercetta tutti gli eseguibili caricati a runtime (devices, librerie, eseguibili, datatypes, moduli, ...) ed esegue una scansione sul codice degli eseguibili alla ricerca di funzioni matematiche di vecchi compilatori e le rimpiazza con istruzioni matematiche disponibili su processori 68020 e 68030.

Se nell'eseguibile scansionato non viene trovata nessuna routine do sostituire, allora il processo di caricamento dell'eseguibile continua con la funziona LoadSeg() originale.

Se nell'eseguibile scansionato vengono trovate delle routine da rimpiazzare, allora l'eseguibile pacthato viene salvato nella cartella RAM: e viene caricato in memoria, tramite la funzione LoadSeg() originale, l'eseguibile patchato.

Se non si riscontrano problemi nell'esecuzione dell'eseguibile patchato, si può prendere la versione patchata nel cassetto RAM: e copiarlo al posto dell'originale (fate sempre una copia di backup del file originale).

Alcuni esempi di routine patchate:

  • Lattice SAS/C slow 68000 signed multiplication (routine da 32 bytes) viene sostituita con un muls.l (6 bytes)
  • Lattice SAS/C slow 68000 signed division (routine da 194 bytes) viene sostituita con un divsl.l (6 bytes)

 In tutto ci sono 26 routine con codice 68000 di vecchi compilatori.

Esempio di utilizzo:

potete copiarlo dove volete sul vostro harddisk (C:, SYS:Tools, ...), lanciare il programma da shell, gli eseguibili patchati verranno salvati in RAM:

CTRL+C per interrompere il programma

 

TIPS&TRICKS

 se si vuole scansionare un'intera direcory si può provare a dare da shell i seguenti comandi, si assume che SmartPatch020 sia già in esecuzione su altra shell:

cd LIBS:

List #? lformat "Version %s" >scan

FailAt 21

Execute scan

List RAM:

in questo modo il comando Version caricherà in memoria uno ad uno gli esguibili tramite LoadSeg(), quindi SmartPatch020 li intercetta ed esegue scansione, alla fine controlla la cartella RAM: per vedere se qualche eseguibile è stato patchato.

 

Effetti positivi: l'eseguibile patchato potrebbe guadagnare un 15% in termini di velocità di esecuzione, ciò dipende da quanto viene utlizzata la routine patchata.

Effetti negativi: il caricamento di un programma diventa molto più lento perché viene eseguita una scansione del codice dell'eseguibile alla ricerca di routine da patchare. Quindi non va usato nel normale utilizzo del sistema operativo.