Afin de comprendre et modifier plus en profondeur le bootcode du lapin, j'ai developpé un désassembleur, et un assembleur. (Basé sur le travail de nombreuses personnes, dont Sache).
Ces deux utilitaires fonctionnent en ligne de commande, et sont disponibles sous forme de source à compiler.
Assembleur (nabAsm) https://github.com/Pixel166/nabAsm
Désassembleur (nabDasm) https://github.com/Pixel166/nabDasm
Leur utilisation est très simple :
./nabDasm <fichier bootcode> <fichier source à créer> ./nabAsm <fichier source> <fichier bootcode à créer>
Lors de la modification des sources, il faut veiller à garder la même structure que celle créée par le désassembleur. De plus, il ne s'agit que d'un assembleur, et pas d'un compilateur. Donc si vous devez insérer des nouvelles variables globales, il faut soit décaller toutes les références aux variables suivantes dans le code, soit insérer les nouvelles variables à la fin de la liste.
Je n'ai pas encore testé, mais étant donné que certaines variables globales sont identiques (notamment des entiers ou des “false”), il est peut-être possible d'utiliser dans le code toujours la même variable globale, afin de réutiliser toutes les autres pour une autre utilisation.
Les fichiers bootcode créés peuvent être utilisés avec openJabNab, en utilisant les options permettant de fournir un fichier bootcode:
- StandAloneUseLocalBootcode
pour utiliser un fichier local en mode standalone, mettre cette valeur à true
- ProxyUseLocalBootcode
pour utiliser un fichier local en mode proxy, mettre cette valeur à true
- Bootcode
Chemin vers le fichier bootcode à utiliser.
Compilation des utilitaires
Il faut avoir un environnement de développement avec Qt. ensuite, lancer la commande
qmake -r
puis lancer la compilation
make
Et voilà !