Logo


Xanetiz > Programmation > L'assembleur

Top

L'assembleur

L'assembleur


6 909 vues

Partager

Le langage assembleur

Pour beaucoup de personnes, assembleur rime avec prise de tête inutile. Et oui, il est rare de nos jours de devoir utiliser ce langage de bas niveau. On préfère utiliser des langages de haut niveau tels que le C qui sont beaucoup plus faciles.

Attention, quand on dit bas niveau, ça ne veut absolument pas dire que c'est plus simple. Cela signifie que c'est proche du langage utilisé par votre ordinateur. Plus c'est bas, plus c'est compliqué.

On peut dire que l'assembleur n'est qu'une suite d'instructions très simples et très limités. Il n'y a pas les techniques comme les boucles ou les conditions directement utilisables. Il faut donc les décomposer.

Ainsi, programmer en assembleur n'est finalement, si on savait déjà programmer avant, que décomposer les structures complexes en structures simples. Cela donne donc un code beaucoup plus grand. Une ligne de code a souvent un équivalent multiplié par 10 en assembleur Smiley

Le problème majeur

Avec le langage C, vous l'apprenez et vous serez capable de programmer sur n'importe quelle machine grâce à des compilateurs adéquats. Cependant, avec l'assembleur c'est différent. Chaque processeur à des jeux d'instructions différents. En gros, ce ne sont pas les mêmes façons de programmer.

Le programmeur doit donc s'adapter à chaque fois. Si on résume :

Pourquoi l'utiliser ?

Avec ce langage, vous aurez un programme bien plus performant qu'avec d'autres langages de plus haut niveau. Pour des petits programmes ça n'a aucune utilité, mais pour des jeux qui nécessitent beaucoup de rapidité ou les pilotes de périphériques par exemple, c'est parfois nécessaire.

Je pense que ce langage n'est pas forcément plus complexe que les autres, il est seulement plus long à utiliser et le fait de tout mettre en bloc le rend parfois illisible. De plus, certaines notions comme les piles sont difficiles à comprendre. Mais si vous vous intéressez au fonctionnement du processeur au niveau des registres et des instructions, c'est vraiment intéressant.

Un exemple

Une petite structure avec une condition if en C donnerait :

if(a <= b)
{
    // instruction1
}
// instruction2

Si a est plus petit ou égal à b, on fait l'instruction 1. Dans les deux cas on fait l'instruction 2.

Pour un processeur MIPS, on utiliserait l'instruction bgt qui calcule si a > b (car il faut inverser le sens du test). On utilise des labels pour se diriger. Cela donnerait :

bqt $r1,$r2,fin
instruction1;
fin:instruction2;

En gros, on stocke les valeurs de a et b dans des petites mémoires situées dans le processeur qu'on appelle des registres. Ce test donne : si la valeur contenue dans le registre r1 est plus grande que celle contenue dans le registre r2, sautez au label fin et n'exécutez pas l'instruction 1. Sinon, c'est que c'est inférieur ou égal (le test du if pour le C), on fait l'instruction 1 puis l'instruction 2.

Notez que pour ce cas, la différence de lignes de code n'est pas vraiment perceptible (c'est pour ça que je l'ai choisi Smiley). Normalement, il faut initialiser les valeurs en C, et donc les charger dans les registres en assembleur ce qui rajouterait déjà quelques lignes.

Pour résumer

Titre Vu Date
Placer un copyright sur ses images en PHP Placer un copyright sur ses images en PHP 5 913 04/04/12
Les designs en CSS Les designs en CSS 5 587 16/02/10
Utiliser un IDE pour programmer Utiliser un IDE pour programmer 6 534 25/02/10
Compiler avec GCC sur Linux Compiler avec GCC sur Linux 14 070 16/02/10
L'essentiel du langage C L'essentiel du langage C 17 436 14/03/10

StatistiquesNombre d'inscrits : 227
Dernier membre : StevenMot
Visiteurs en ligne : 3
Membres en ligne : Aucun

Copyright © 2022 Xanetiz.com - Tous droits réservés

Hebdotop