Toutes les versions de FASM peuvent générer directement les formats suivants : binaire brut (utilisable également comme exécutable COM MS-DOS ou pilote SYS), objets : ELF ( Executable and Linkable Format ) ou COFF ( Common Object File Format ) (classique ou spécifique à MS), ou exécutables aux formats MZ , ELF ou PE ( Portable Executable ), y compris les pilotes WDM et la possibilité de créer un stub DOS MZ personnalisé. Un portage non officiel pour l’ architecture ARM existe également.
Pologne . Il a été rendu public en mars 2000. FASM est entièrement écrit en langage assembleur et son code source complet est fourni. Il est auto-hébergé et capable de s'assembler lui-même depuis la version 0.90 (4 mai 1999).FASM fonctionnait initialement en mode réel plat 16 bits . La prise en charge 32 bits a été ajoutée, puis complétée par la prise en charge optionnelle de DPMI . Conçu pour être facilement portable sur tout système d'exploitation disposant d'un adressage 32 bits plat, il a été porté sur Windows, puis sur Linux.
Conception
FASM ne prend pas en charge autant d'instructions de haut niveau que MASM ou TASM . Il offre des fonctionnalités syntaxiques et des macros permettant de personnaliser ou de créer des instructions manquantes. Sa syntaxe d'adressage mémoire est similaire au mode idéal de TASM et à NASM . Les opérandes mémoire sont désignés par des crochets, comme dans les deux assembleurs, mais leur taille est placée à l'extérieur des crochets, comme dans NASM.
FASM est un assembleur multipasse. Il optimise fortement la taille du code et permet des références anticipées sans contrainte. Une construction FASM inhabituelle consiste à définir des procédures uniquement si elles sont utilisées quelque part dans le code, ce qui, dans la plupart des langages, est fait par objet par l' éditeur de liens .
FASM repose sur le principe « même source, même sortie » : le contenu du fichier résultant n’est pas affecté par la ligne de commande. Cette approche évite aux sources FASM les problèmes de compilation souvent rencontrés dans de nombreux projets assembleur. En revanche, elle complique la maintenance d’un projet composé de plusieurs fichiers sources compilés séparément ou de projets multilangages. Cependant, il existe un wrapper Win32 appelé FA, qui atténue ce problème. Les projets FASM peuvent être compilés directement à partir d’un seul fichier source en un fichier exécutable, sans étape d’édition de liens.
IDE
Fresh , un projet lancé par John Found, est un environnement de développement intégré pour FASM sous Windows et Linux.
Utiliser
Systèmes d'exploitation écrits avec FASM :
- MenuetOS – Systèmes d'exploitation GUI 32 et 64 bits de Ville Turijanmaa
- KolibriOS
Compilateurs utilisant FASM comme moteur :