doc rédigé par Whyp
Ce format de fichiers a été développé par Datalight. Il permet d’exécuter des programmes directement depuis une rom, en ne chargeant en ram que les variables. Ceci est utile pour plusieurs raisons :
Mais il possède également un défaut important, celui de ralentir la vitesse d’exécution des programmes. Car les fichiers Rxe sont des exécutables de type .exe modifiés pour répondre aux attentes présentées ci-dessus. Pour cette raison, et pour rester compatible avec MS-DOS, ce format garderas également l’extension .exe . Il est utilisé sur la graph100 par tous les programmes initialement présents sur la graph100 de plus de 64Ko, c’est-à-dire tout les programmes du lecteur B : a K :.
Habituellement, MS-DOS, pour exécuter des programmes, commence à les copier du disque sur lequel ils sont stockés vers la mémoire. Des informations concernant l’adresse de chargement du programme ainsi que sa taille sont alors écrites dans l’entête de l’image copiée. Les modifications se font au niveau de zones contenant l’adresse de chaque partie du programme, les Fix-Ups. En effet, en modifiant leurs valeur, on peut prévenir MS-DOS que les données a traité ou a exécuté sont situé a un endroit précis, sur un disque hors de la ram. Ces Fix-Ups sont contenus dans l’entête de l’exécutable, c’est donc a cet endroit que vont avoir lieu les modifications.
Il existe trois types de Fix-Ups. Le premier est celui qui se refere aux segments de code. Un segment de code ne contient théoriquement aucune données destinées a être modifiée, on peut donc l’exécuté directement depuis le disque. Toutes les références aux segments de code du programme sont donc modifiées pour avoir une valeur fixe pointant vers le disque contenant ces segments. Cette méthode empêche donc d’écrire un code capable de se modifier lui-même, le code étant exécuté sans avoir été chargé en mémoire (XIP : eXecute In Place). Au moment de l’exécution du programme, MS-DOS effectue lui aussi ce genre de modifications, dans l’entête de l’exécutable pour que celui-ci sache ou se trouve les données qu’il va devoir manipuler, car un exécutable n’est jamais chargée a la même adresse dans la ram. C’est ces manipulations qui vont devoir être prévues a l’avance par le convertisseur Rxe pour ne laisser MS-DOS manipuler que les données à charger en mémoire. Le troisième type de modification est a appliqué au segment de code. En effet, ceux-ci on besoin d’accéder aux données. Hors, les données ne sont plus du tout au même endroit que le code, l’un étant dans la ram, l’autre sur un disque. Mais les données étant situées aléatoirement en ram, on ne peut en prévoir les adresses à l’avance. Le convertisseur Rxe vas donc remplacer les appels de données du code par une interruption de sa création chargée d’accédée au données requise. C’est cette partie qui va ralentir significativement l’exécution du programme. De plus ces appels peuvent être ambiguë, ce qui ne facilite pas la programmation. Vous trouverez de plus amples informations sur la fiche technique de datalight « RXE Theory of Operation ».
Le format Rxe convient tout à fait aux applications de calculs tels qu’elles sont présentes sur la graph100, car ces programmes sont essentiellement constitués de code. Il n’est va pas de même pour les jeux qui eux souffrirais de ces accès trop fréquents au données notamment pour l’affichage des graphismes stockés en tant que données dans les programmes. La solutions consisterais alors à les rendre statiques (elles serait ainsi stocké dans les segments de code), mais il ne faut pas non plus oublier que la flash et la rom on des temps d’accès au données supérieurs à ceux de la ram.