Logo


Xanetiz > Programmation > L'assembleur

Top

L'assembleur

L'assembleur


4 154 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
Les designs en CSS Les designs en CSS 3 158 16/02/10
L'essentiel du langage PHP L'essentiel du langage PHP 7 391 14/03/10
L'essentiel du langage XHTML L'essentiel du langage XHTML 3 317 13/03/10
Utiliser un IDE pour programmer Utiliser un IDE pour programmer 3 788 25/02/10
Placer des statistiques en PHP sur son site Placer des statistiques en PHP sur son site 4 463 06/02/10

StatistiquesNombre d'inscrits : 174
Dernier membre : stiv68
Visiteurs en ligne : 4
Membres en ligne : Aucun

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

Hebdotop