T.P Langage Assembleur

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

1

LANGAGE ASSEMBLEUR

Un langage d'assemblage ou langage assembleur est, en programmation informatique, le


langage de plus bas niveau qui représente le langage machine sous une forme lisible par un
humain. Les combinaisons de bits du langage machine sont représentées par des symboles dits
« mnémoniques », c'est-à-dire faciles à retenir. Le programme assembleur convertit ces
mnémoniques en langage machine, ainsi que les valeurs (écrites en décimal) en binaire et les
libellés d'emplacements en adresses, en vue de créer par exemple un fichier objet ou un fichier
exécutable.
Dans la pratique courante, le même terme assembleur est utilisé à la fois pour désigner le langage
d'assemblage et le programme assembleur qui le traduit. On parle ainsi de « programmation en
assembleur ».
La traduction une fois pour toutes par beaucoup d'interpréteurs de chaque nom de variable
rencontré dans une instruction (évoluée) par la position mémoire associée et de chaque constante
(écrite par l'utilisateur en décimal) en binaire est typique d'une opération d'assemblage, bien que
le nom d'assembleur ne soit pas couramment utilisé dans ce cas précis.
Les programmes de l'EDSAC (1949), premier calculateur à programmes enregistrés, étaient
rédigés en utilisant des mnémoniques alphabétiques d'une lettre pour chaque instruction. La
traduction était alors faite à la main par les programmeurs, une opération longue, fastidieuse et
entachée d'erreurs.
Le premier programme assembleur a été écrit par Nathaniel Rochester pour l'IBM 701 (le premier
ordinateur commercialisé par IBM) en 1954.
Les langages d'assemblages ont éliminé une grande partie des erreurs commises par les
programmeurs de la première génération d'ordinateurs, en les dispensant de mémoriser les codes
numériques des instructions et de faire des calculs d'adresses. La programmation en assembleur
était alors utilisée pour écrire toutes sortes de programmes.
Dans les années 1970-80, l'utilisation de l'assembleur pour écrire des applications a été très
largement supplantée par l'emploi de langages de programmation de haut
niveau : Fortran, COBOL, PL/I, etc. : la puissance des machines le permettait et consacrer quelques
minutes de temps machine à une compilation pour économiser quelques heures de temps de
programmeur était une opération rentable, même si les compilateurs de l'époque fournissaient un
code moins performant (plus volumineux et souvent plus lent). Par ailleurs, ces langages de haut
niveau permettaient de s'affranchir de la dépendance à une architecture matérielle unique.
Les systèmes d'exploitation ont été écrits en langage d'assemblage jusqu'à l'introduction
de MCP de Burroughs, en 1961, qui était écrit en ESPOL, dialecte d'Algol.
L'assembleur est revenu quelque peu en faveur sur les premiers micro-ordinateurs, où les
caractéristiques techniques (taille mémoire réduite, puissance de calcul faible, architecture
spécifique de la mémoire, etc.) imposaient de fortes contraintes, auxquelles s'ajoute un facteur
psychologique important, l'attitude « hobbyiste » des premiers utilisateurs de micro-ordinateurs,
qui ne se satisfaisaient pas de la lenteur des programmes écrits avec le BASIC interprété
généralement fourni avec l'ordinateur.
Des gros programmes ont été écrits entièrement en assembleur pour les micro-ordinateurs,
comme le système d'exploitation DOS de l'IBM PC (environ 4000 lignes de code), et le
tableur Lotus 1-2-3 (son rival Multiplan, qui existait déjà sous CP/M, était écrit en C). Dans les
2
années 1990, c'était aussi le cas pour la plupart des jeux pour consoles vidéo (par exemple pour
la Mega Drive ou la Super Nintendo).
Voici quelques types de langages assembleur et leurs caractéristiques :
1. MIPS (microprocessor without interlocked pipeline stages)

L'architecture MIPS (de l'anglais : microprocessor without interlocked pipeline stages) est
une architecture de processeur de type Reduced instruction set computer (RISC) développée
par la société MIPS Technologies (alors appelée MIPS Computer Systems), basée à Mountain
View en Californie.
Les processeurs fabriqués selon cette architecture ont surtout été utilisés dans les
systèmes SGI. On les retrouve aussi dans plusieurs systèmes embarqués, comme les
ordinateurs de poche, les routeurs Cisco et les consoles de jeux vidéo (Nintendo
64 et Sony PlayStation, PlayStation 2 et PSP).
Vers la fin des années 1990, on estimait que les processeurs dérivés de l'architecture MIPS
occupaient le tiers des processeurs RISC produits.
De nos jours cette architecture reste populaire dans le marché de l'informatique embarquée
où elle subit une intense concurrence de la part de l'architecture ARM.
Les MIPS sont aussi présents dans des routeurs ou des NAS, mais ils deviennent aussi de plus
en plus rares dans ce domaine face à la concurrence des ARM, PowerPC et x86 basses
consommations.
Malgré tout, les MIPS reviennent peu à peu dans le marché de l'informatique à haute
performance grâce aux recherches menées par la Chine avec les processeurs Loongson qui ont
été utilisés pour la création du supercalculateur Dawning 5000L et 6000.
En 2015, la Russie annonce vouloir remplacer les processeurs conçus par des sociétés des
États-Unis par des processeurs locaux dans les systèmes informatiques nationaux. Les
processeurs d'architecture MIPS, Baikal T1 de la société russe spécialisée dans
les supercalculateurs T-Platforms sont alors choisis. Leur conception est soutenue par le
conglomérat de la défense Rostec et co-financée par l'entreprise publique russe Rosnano (Роснано).

2. FASM (assembleur plat )

FASM (assembleur plat) est un assembleur pour x86 processeurs. Il prend en charge de style Intel
langage assembleur sur l’IA-32 et x86-64 architectures informatiques. Il prétend grande vitesse,
optimisation de la taille, le système d'exploitation (OS) portabilité et macro capacités. Il est un
faible niveau assembleur et utilise volontairement très peu de ligne de commande options. Il est
un logiciel open source libre et.

Toutes les versions de FASM peuvent directement sortie une des opérations suivantes: plates «
brutes » binaires (utilisable également comme DOS exécutable COM pilote ou SYS), les objets:
Exécutable et Format liable (ELF) ou format de fichier objet commun (COFF) (classique ou MS
Spécifiques), ou dans les deux exécutables MZ, ELF, ou Portable Exécutable Format (PE) (y
compris les pilotes WDM, permet stub DOS MZ personnalisée). Un port officieux ciblant
l’architecture ARM (FASMARM) existe également.
3
Conception

FASM ne supporte pas autant de haut niveau énoncé comme MASM ou TASM. Il fournit des
fonctionnalités syntaxe et les macros qui permettent de personnaliser ou de créer des
déclarations manquantes. Sa syntaxe adressage mémoire est similaire au mode idéal de TASM et
NASM. Les crochets sont utilisés pour désigner des opérandes de mémoire dans les deux
monteurs, mais leur taille est placée à l’extérieur des parenthèses, comme dans MSNA.

FASM est un assembleur à plusieurs passes. Il fait l’optimisation vaste taille de code et permet le
référencement en avant sans contrainte. Une construction inhabituelle FASM définit les
procédures que si elles sont quelque part utilisés dans le code, ce qui dans la plupart des langues
se fait par objet par l’éditeur de liens.

FASM est basé sur le principe « même source, même sortie »: le contenu du fichier résultant n’est
pas affecté par la ligne de commande. Une telle approche permet d’économiser les sources FASM
de compilation présentent souvent des problèmes dans de nombreux projets d'assemblage.
D'autre part, il rend plus difficile de maintenir un projet qui se compose de plusieurs fichiers
source compilés séparément ou des projets de langue mixte. Cependant, il existe un Win32
wrapper appelé FA, ce qui atténue ce problème. Projets FASM peuvent être construits à partir d’un
fichier source directement dans un fichier exécutable sans étape de liaison.

IDE frais

Frais, un projet soutenu par la communauté Internet a commencé par John Found, est un
environnement de développement intégré pour l’assembleur plat langage. Frais prend
actuellement en charge Microsoft Windows et Linux.
Systèmes d'exploitation écrits avec FASM:

Dexos - par Craig Bamford et la communauté Dexos


MenuetOS - 32 et 64 bits GUI systèmes d'exploitation par Ville Turijanmaa
KolibriOS
Compilateurs qui utilisent FASM en tant que back-end:

PureBasic
Assemblée de haut niveau (HLA)
BlitzMax

3. TASM (Turbo Assembler)

TASM peut se référer à:

Turbo Assembleur, l'assembleur x86 de Borland

Turbo Assembler, de Omikron Commodore 64 à base de 6502 assembleur

Tableau Assembler, une table transversale assembleur entraîné pour les petits microprocesseurs

Tomahawk missiles anti-navires

Tulsa Air Museum & Planetarium Espace


4
L'incroyable homme-araignée

4. NASM (Netwide Assembleur)


Le Netwide Assembleur ( MSNA ) est un assembleur et désassembleur pour l' Intel x86 architecture. Il
peut être utilisé pour écrire 16 bits , 32 bits ( IA-32 ) et 64 bits ( x86-64 programmes). MSNA est considéré
comme l’un des assembleurs les plus populaires pour Linux .

MSNA a été écrit par Simon Tatham avec l’aide de Julian Hall. En 2016, il est maintenu par une petite
équipe dirigée par H. Peter Anvin . Il est un logiciel open-source disponible sous les termes d'une procédure
simplifiée (2-clause) licence BSD.

Caractéristiques

MSNA peut produire plusieurs formats binaires dont COFF , OMF, a.out , Exécutable et Format
liable (ELF), Mach-O et fichier binaire (.bin, image disque binaire, utilisé pour compiler les
systèmes d'exploitation ), mais le code indépendant de la position est pris en charge uniquement
pour ELF fichiers objet . NASM possède également son propre format binaire appelé RDOFF.

La variété des formats de sortie permet reciblage des programmes de pratiquement tous les
systèmes d'exploitation x86 (OS). En outre, NASM peut créer des fichiers binaires plats, utilisables
pour écrire les chargeurs de démarrage, en lecture seule mémoire des images (ROM), et dans
diverses facettes du développement OS. MSNA peut fonctionner sur des plates - formes non-x86
comme assembleur croix, comme PowerPC et SPARC, mais il ne peut pas générer des programmes
utilisables par ces machines.

MSNA utilise une variante de la syntaxe d'assemblage Intel au lieu d’AT & T syntaxe. Il évite
également des fonctionnalités telles que la génération automatique de segments overrides (et la
directive connexe) ASSUMER utilisés par MASM et assembleurs compatibles.

Mise en relation

MSNA principalement sorties des fichiers objet, qui ne sont généralement pas exécutables par eux
- mêmes. La seule exception à cette règle sont les binaires plats (par exemple, .COM) qui sont par
nature limitées dans l’usage moderne. Pour traduire les fichiers d'objets dans les programmes
exécutables, un emplacement approprié éditeur de liens doit être utilisé, comme le Visual Studio «
LINK » utilitaire pour Windows ou ld pour les systèmes Unix.

RDOFF

Développé par Julian Salle

Type de format format de fichier objet

Conteneurs Code objet

Format repositionnable dynamique Object File (RDOFF) est utilisé par les développeurs pour
tester l'intégrité des capacités de sortie de fichier objet de MSNA. Il est basé en grande partie sur
la structure interne de MSNA, constitué essentiellement d'un en- tête contenant une sérialisation
des appels de fonctions de driver de sortie, suivie par une série de sections contenant du code
exécutable ou des données. Outils pour utiliser le format, y compris un agent de liaison et le
chargeur, sont inclus dans la distribution MSNA.
5
Jusqu'à la version 0.90 a été publié en Octobre 1996, NASM pris en charge la sortie des fichiers
exécutables uniquement au format plat (par exemple, DOS fichiers COM). Dans la version 0.90,
Simon Tatham a ajouté le support pour une interface de sortie fichier objet, et pour les fichiers
DOS OBJ pour que le code 16 bits.

MSNA manquait donc un format d'objet 32 bits. Pour remédier à ce manque, et comme un exercice
pour apprendre l'interface fichier objet, développeur Julian hall mis en place la première version
de RDOFF, qui a été publié dans la version MSNA 0,91.

Étant donné que cette version initiale, il y a eu une mise à jour majeure au format RDOFF, qui a
ajouté un indicateur d’enregistrement de longueur sur chaque enregistrement d’en- tête, ce qui
permet des programmes de sauter sur les dossiers dont le format qu'ils ne reconnaissent pas, et le
soutien de plusieurs segments; RDOFF1 uniquement pris en charge trois segments: le texte, les
données et bss (contenant des données non initialisées).

5. SASM (Simple Asm)

SASM (abréviation de SimpleASM) est un environnement de développement intégré


multiplateforme gratuit et open source pour les langages d'assemblage NASM, MASM, GAS et
FASM. Il comporte la coloration syntaxique et inclut un débogueur.

SASM est destiné à permettre aux utilisateurs de développer et d'exécuter facilement des
programmes écrits en langage d'assemblage. Il a été écrit par Dmitriy "Dman95" Manushin et
sous licence GNU GPL v3.0.

Caractéristiques Quatre assembleurs - NASM, MASM, GAS et FASM sont pris en charge Mise en
évidence de la syntaxe avec un jeu de couleurs réglable Débogueur graphique pratique Le
programme est traduit en russe, anglais, turc, chinois, allemand, italien, polonais, hébreu,
espagnol Bibliothèque de macros d'entrée / sortie Capacité à travailler avec plusieurs fichiers
à l'aide d'onglets Tous les composants requis sont inclus (gdb, gcc, nasm, masm, fasm, gas).

6. GAS (Gnu)

L'assembleur GNU, communément appelé gas ou simplement son nom d'exécutable, est
l'assembleur utilisé par le projet GNU. C'est le back-end par défaut de GCC. Il est utilisé pour
assembler le système d'exploitation GNU et le noyau Linux, ainsi que divers autres logiciels. Il
fait partie du paquet GNU Binutils.

L'exécutable GAS est nommé comme, le nom standard d'un assembleur Unix. GAS est
multiplateforme, et à la fois fonctionne et s'assemble pour un certain nombre d'architectures
informatiques différentes. Publié sous la licence publique générale GNU v3, GAS est un logiciel
libre.
L'histoire
La première version de GAS a été publiée c. 1986-1987. [1] Il a été écrit par Dean Elsner et a
pris en charge l'architecture VAX.

Syntaxe générale
GAS prend en charge une syntaxe générale qui fonctionne pour toutes les architectures prises
en charge. La syntaxe générale comprend des directives assembleur et une méthode de
commentaire.
6

Directives
GAS utilise des directives assembleur (également appelées pseudo opérations), qui sont des
mots-clés commençant par un point et qui se comportent de la même manière que les
directives de préprocesseur dans le langage de programmation C. Alors que la plupart des
directives assembleur disponibles sont valides quelle que soit l'architecture cible, certaines
directives dépendent de la machine.

Usage
En tant que back-end d'une suite de compilateurs populaires, à savoir GCC, l'assembleur GNU
est très largement utilisé dans la compilation de logiciels open source modernes. GAS est
souvent utilisé comme assembleur sur les systèmes d'exploitation GNU / Linux en conjonction
avec d'autres logiciels GNU. Une version modifiée de GAS se trouve également dans le package
d'outils de développement du système d'exploitation Macintosh depuis OS X.

Vous aimerez peut-être aussi