Fliesskomma korrekt zu emulieren ist sowieso so eine Sache. Problem ist daß bei den meisten Compilern double nur 64bit ist, womit sich die 68k-Fließkomma-Werte nicht korrekt darstellen lassen. Und long-double ist nicht überall verfügbar. Selbst wenn, gibt es da kleine aber feine Unterschiede in der externen Darstellung (nicht nur endian-Probleme, 68k speichert die ohne implizites integer-Bit und hat dadurch 1 bit mehr für die Mantisse als z.B. x86).
Edit: oh, sehe gerade, unter https://github.com/kstenerud/Musashi gibt es eine deutlich neuere Version.
Die FPU-Unterstützung in Musashi läuft offenbar ohne "long double", daher signifikant langsamer als möglich, aber ist vermutlich nicht ganz zu Ende gedacht. Zitat:
extern void m68040_fpu_op0(void);
extern void m68040_fpu_op1(void);
extern void m68881_mmu_ops(void);
Das wirkt etwas seltsam. Die PMMU ist bekanntlich 68851 und nicht 68881, außerdem fehlen dem 68040 ein paar FPU-Befehle, die man softwaretechnisch nachrüsten müßte -- oder man tut so, als ob die FPU vollständig wäre. Eigentlich schwebte mir die Konfiguration 68020+68882 vor, das macht am wenigsten Umstand, und eine PMMU ist "teuer". Wäre das ein 68EC040 (EC für
economy class)? Ich habe die Übersicht verloren.
Außerdem ist der Emulator komplizierter geworden; die eigentlichen Funktionen werden erst generiert, möglicherweise im make-Prozeß, d.h. es gibt eine Art
template und einen Code-Generator.
Ist vielleicht den Aufwand doch nicht wert. Schneller würde es vermutlich auch nicht.