Logo


Xanetiz > Programmation > L'assembleur

Top

L'assembleur

L'assembleur


4 465 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
Bloquer le clic droit sur un site web Bloquer le clic droit sur un site web 5 856 23/03/10
Utiliser un IDE pour programmer Utiliser un IDE pour programmer 4 049 25/02/10
Compiler avec GCC sur Linux Compiler avec GCC sur Linux 9 674 16/02/10
L'essentiel du CSS L'essentiel du CSS 4 472 14/03/10
L'essentiel du langage XHTML L'essentiel du langage XHTML 3 573 13/03/10

StatistiquesNombre d'inscrits : 175
Dernier membre : FloydGab
Visiteurs en ligne : 1
Membres en ligne : Aucun

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

Hebdotop