● Korben
📅 17/03/2026 à 14:56
Z80 Sans, la police de caractères qui désassemble du code machine toute seule - Korben
Géopolitique
👤 Korben
Z80 Sans, la police de caractères qui désassemble du code machine toute seule17 mars 2026 / PAR VINCENT LAUTIER / 3 MIN DE LECTURE / À lire plus tard SauvegardéCe qu’il faut retenirZ80 Sans est une police OpenType qui désassemble du code machine Z80 en direct : collez des opcodes hexa dans LibreOffice, changez la police, et les instructions assembleur s'affichent en clair sans aucun logiciel externe.Le dev a résolu 458 752 combinaisons possibles du Z80 en exploitant les tables de substitution de glyphes (GSUB) d'OpenType, normalement utilisées pour l'arabe ou les ligatures, avec un parseur par descente récursive générant automatiquement toutes les règles.C'est le détournement le plus complexe jamais fait sur une police : après Fontemon (un jeu vidéo en police) et Llama.ttf (un modèle IA en police), un désassembleur complet pour un jeu d'instructions entier, c'est un cran au-dessus en termes de bidouille.Résumé généré par IAUn développeur a créé une police OpenType capable de convertir des opcodes hexadécimaux du processeur Z80 en instructions assembleur lisibles.Il suffit de coller le code machine dans un traitement de texte, de changer la police, et les mnémoniques s'affichent en clair. Le projet, disponible sur GitHub, détourne les tables de substitution de glyphes de manière plutôt rigolote.Une police, pas un logicielL'idée est en fait assez simple. Vous balancez une suite de caractères hexadécimaux dans LibreOffice Writer, puis vous sélectionnez cette police, Z80 Sans donc, et sous vos yeux ébahis, le texte se transforme en instructions assembleur.Pas besoin d'installer un désassembleur, pas besoin de ligne de commande. La police fait tout le travail.Derrière cette apparente simplicité, le développeur nevesnunes a exploité deux composants du standard OpenType que l'on retrouve habituellement dans des usages bien plus classiques : la table de substitution de glyphes (GSUB) et la table de positionnement (GPOS).Ce sont les mêmes mécanismes qui permettent d'afficher correctement l'arabe ou de fusionner deux lettres en une ligature comme le "æ". Ici, ils servent à reconnaître des séquences hexadécimales et à les remplacer par les mnémoniques Z80 correspondants.458 752 combinaisons à gérerLe Z80 est un processeur 8 bits qui accepte des adresses sur 16 bits et plusieurs registres comme opérandes. Résultat : une seule instruction peut donner jusqu'à 458 752 combinaisons possibles.Et comme les octets hexadécimaux sont encodés dans un ordre différent de celui dans lequel ils doivent être affichés en assembleur, le problème se corse vite. Les adresses en little-endian et les offsets signés en complément à deux ajoutent encore une couche de difficulté.Pour s'en sortir, nevesnunes a construit un parseur par descente récursive qui génère automatiquement toutes les règles de substitution nécessaires. Chaque quartet (0 à f) dispose de ses propres glyphes, soit 96 au total pour la partie numérique.Le tout repose sur une édition directe des fichiers .ttx, la représentation XML des données de police, à partir de Noto Sans Mono et Droid Sans Mono.Du détournement de police à l'art de la bidouilleZ80 Sans n'est pas le premier projet à détourner les capacités des polices OpenType. On a déjà vu Fontemon, un jeu vidéo complet caché dans une police, ou encore Addition Font, capable d'additionner deux nombres rien qu'avec le rendu typographique.Il y a même eu Llama.ttf, qui embarquait un modèle d'IA directement dans un fichier de police. Mais un désassembleur complet pour un jeu d'instructions entier, c'est quand même autre chose en termes de complexité.Visiblement, le projet comporte encore quelques petits bugs d'affichage sur certaines instructions complexes, et le code est qualifié par son propre auteur de "qualité CTF", ce qui veut dire bidouille assumée.Mais bon, on parle d'un type qui a réussi à faire rentrer un désassembleur Z80 dans une police de caractères. Les puristes de l'assembleur apprécieront le côté complètement absurde de la démarche, et les fans de rétro-informatique vont adorer.Source : Lobste.rsRéférenceshttps://lobste.rs/s/hbybe3/z80_sans_opentype_font_disassembles_z80Cet article peut contenir des images générées à l'aide de l'IA - J'apporte le plus grand soin à chaque article, toutefois, si vous repérez une boulette, faites-moi signe !Vous avez aimé cet article ?Alors rejoignez ma communauté sur Patreon et accédez à des articles exclusifs, des tutos avancés et plein d'autres surprises que je réserve à mes soutiens. C'est grâce à vous que je peux continuer à partager ma passion depuis 20 ans !Rejoindre l'aventure Développeurs, découvrez les offres taillées pour vos projetsContenu partenaireVous êtes développeur web ? Alors vous allez adorer les nouvelles offres de o2switch, conçues spécialement pour vous !Profitez d'une puissance inégalée : Cloud avec 12 CPU et 48 Go de RAM à 1,86 € HT/mois, ou Pro avec 24 CPU et 64 Go de RAM à 6,25 € HT/mois. Déployez vos projets en quelques clics grâce à Softaculous et ses + de 300 scripts prêts à l'emploi.La vitesse, vous aimez ? Eux aussi ! C'est pour ça qu'ils vous font fait profiter de la technologie NVMe dernière génération et de puissants caches comme Varnish et LiteSpeed. Tout ça avec la sérénité d'un hébergement français sécurisé par un WAF sur-mesure, des sauvegardes jusqu'à 90 jours (selon l'offre) et un support prioritaire 24/7 (N2 à N2+3 selon l'offre).Et vous savez quoi ? Les offres démarrent à seulement 1,86 € HT/mois. Foncez, c'est le moment de coder sans limites et de donner vie à vos projets les plus fous grâce à o2switch !Découvrez les nouvelles offres o2switch
🔗 Lire l'article original
👁️ 1 lecture