Seiya ha scritto:veramente la porcata non la fatta Motorola, ma chi scriveva i programmi senza leggersi i manuali,
Questo capita ovviamente, ma se Motorola ha scritto dei manuali su come utilizzare l'FPU 68881/2, e ho seguito le sue linee guida, io sono a posto.
Ho ancora un manuale del 68030 che riporta anche le istruzioni dell'FPU, e non c'è scritto da nessuna parte che non si potevano usare funzioni trascendentali o di conversione a intero.
E penso che sia ovvio il motivo.
senza imparare le nuove istruzioni risc
Non esistono nuove istruzioni, tanto meno RISC. Tutta la famiglia 68K è CISC, compreso il 68060.
e scrivendo codice otimizzato per la FPU 68040 usando istruzioni FInt e Fintrz delle fpu 68881/2
Non vedo perché non avrei dovuto usarle, visto che erano perfettamente lecito.
Poi non è che ci fosse la macchina del tempo: il 68040 è arrivato nel 1990, e soltanto dopo la sua commercializzazione s'è venuto a sapere che Motorola aveva tranciato via delle istruzioni per sua comodità.
Per tutto il software scritto prima, seguendo le linee guida, e quindi perfettamente lecito, non c'è assolutamente nulla da recriminare.
e 68060 usando codice 020 negli interi che lo 060 ovviamente non ha.
Bene. E il 68060 quando è uscito? Te lo dico io: nel 1994. Quando, cioè, la Commodore è fallita, ed esistevano già vagonate di applicazioni che utilizzava le moltiplicazioni fra interi 32x32->64 bit.
Anche qui, senza macchina del tempo era difficile pensare di scrivere applicazioni tenendo conto che dopo un bel po' di anni Motorola decisse di troncare delle utili istruzioni.
Motorola ha cercato di spiegare attraverso i manuali e la documentazione come funzionasse il 68040 e cosa servisse la 68040.library.
L'ha fatto troppo tardi. Vedi sopra.
E nei manuali che ha scritto PRIMA della commercializzazione del 68040 era tutto lecito.
Ovviamente chi scrive il software se ne è sbattuto altamente di sapere che la fpu dello 040 usa istruzioni Risc
Non esistono istruzioni RISC nemmeno per il 68040.
E i programmatori non se ne sono sbattuti. Anche qui, vedi sopra.
per fare le stesse cose e più velocemente di quelle instruzioni 882, Fint e Fintrz, che su Amiga sono state usate pesantemente da ogni software fpu.
E hanno fatto bene, visto che erano perfettamente lecite, come già detto.
Il fatto poi che il codice otimizzato per 040 non funzionasse senza 68040.library è un altro errore degli sviluppatori.
Si basano tutto sulle librerie matematiche invece di accedere direttamente all'FPU usando il codice risc di tale fpu.
Lo 060 è anche peggio, dato che ancfhe negli interi è RISC e quindi ha un set di istruzioni diverso dallo 020.
Come già detto, non esistono istruzioni RISC con queste CPU, e gli sviluppatori hanno seguito le linee guida.
E' motorola che, oltre a cambiare l'ISA del supervisor space per ogni processore, s'è divertita a troncare istruzioni anche in userspace, che PRIMA aveva messo a disposizione ed erano perfettamente lecite. Pertanto sono state giustamente utilizzate.
Inoltre il set d'istruzioni del 68060 non è diverso da quello del 68060. Semplicemente risulta monco di alcune istruzioni. Sempre per colpa di Motorola.
Motorla ha reinserito nella fpu 68060 quelle due famose Fint e Fintrz, ma cmq ci si basava sempre sulle librerie matematiche.
Ed era un bene, perché in questo modo le applicazioni erano sfruttabili anche da chi non aveva un coprocessore, e con l'emulazione via trap LINE-F delle istruzioni dell'FPU le prestazioni sarebbero state ridicole.
La 68040.library serviva per far funzionare quelle vecchie applicazioni 68882 che usavano delle istruzioni che la fpu dello 040 non aveva.
Chiediti per quale motivo non c'erano.
Alla fine però tutte le applicazioni fpu su 040 non usavano il codice risc di tale fpu, ma il set di istruzioni della 68882.
Abilitando l'Oxypatcher degli Oxyron su 040 e 060, lo vedi in tempo reale cosa succede quando queste fpu e cpu devono eseguire istruzioni che non hanno.
E la colpa sarebbe?
continua a vantartene, ma non è che sia proprio una bella cosa.
Veramente non me ne sto affatto vantando. Ho espresso un dato di fatto.
Ora però sono curioso di sapere che "porcate" hai creato
Nessuna. Io mio codice era pensato per girare su qualunque CPU, anche nel caso in cui utilizzavo codice automodificante (sì, ne ho fatto pesante uso).
Il tutto seguendo rigidamente le linee guida che Commodore dettò nell'Hardware Manual, e quelle di Motorola per i suoi processori.
Ma è chiaro che non tutti le seguivano. Anzi.