FAQ AssembleurConsultez toutes les FAQ
Nombre d'auteurs : 9, nombre de questions : 56, dernière mise à jour : 8 décembre 2017 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum Assembleur de Developpez.com et de l'expérience personnelle des auteurs. Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être exhaustive ; vous pouvez la compléter avec vos propres questions/réponses ou proposer des corrections ou des compléments à des questions/réponses existantes.
Nous espérons que cette FAQ saura répondre à un maximum de vos questions. Nous vous en souhaitons une bonne lecture.
L'équipe Assembleur de Developpez.com.
- 2.1. Technologies (3)
- 2.2. Terminologie (6)
- 2.3. Compilation (5)
- 2.4. Désassemblage et reverse engeenering (1)
- 2.5. Émulation (2)
L'Assembleur est le langage de programmation de plus bas niveau. Cela signifie qu'il est très proche du matériel. À chaque instruction correspond un code machine, qui peut être compris par le microprocesseur. Le code assembleur est donc la version lisible du code machine.
S'il est de nos jours impensable de programmer entièrement une application en Assembleur (sauf à des fins d'apprentissage bien sûr), nombreuses situations font que l'on doit avoir recours à ce langage. C'est par exemple le cas lorsque la vitesse est un facteur critique, et que la moindre microseconde est précieuse, ou encore pour écrire un gestionnaire de démarrage (Boot-Loader), etc.
Tout ce qui doit être optimisé au niveau de la taille (si on n'a que 523 octets de mémoire, par exemple, cas de certains microcontrôleurs), de la vitesse d'exécution, ou ne peut être fait avec autre chose que de l'Assembleur (par exemple, un driver de disque dur).
La plupart des langages évolués permettent d'utiliser l'Assembleur dans les programmes. La syntaxe à utiliser est dépendante du langage et du compilateur utilisés.
Par exemple, sous Delphi (et plus généralement, en Pascal) :
Code delphi : | Sélectionner tout |
1 2 3 4 | asm { code en assembleur } end; |
Code cpp : | Sélectionner tout |
1 2 3 4 | asm { /* Code en assembleur */ } |
Il y a deux méthodes. La première, qui fonctionne dans tous les cas, est de compter le nombre de cycles d'horloge nécessaires à l'exécution de chaque instruction (dans la documentation du microprocesseur/microcontrôleur). Une fois que l'on connaît le nombre de cycles d'horloge nécessaires, il suffit de le multiplier par la période d'un cycle d'horloge interne (qui est généralement différente de la période de l'horloge du composant).
Par exemple, sur un 68HC11 (un microcontrôleur de Motorola), on a :
Code asm : | Sélectionner tout |
1 2 3 | LDAA #$FF ; 2 cycles STAA PORTB ; 2 cycles |
Quartz à 20 MHz, fréquence interne : 20 / 4 = 5MHz
Période : 1/(5*10^6) = 500*10^-9 = 500ns
4 * 500 = 2µs
La seconde méthode n'est utilisable que si elle est supportée par votre micro. Elle consiste à utiliser les instructions spécifiques à votre micro permettant de mesurer les durées d'exécution.
Il faut utiliser la fonction logique XOR. En effet, si on a deux registres A et B dont on souhaite échanger les données, et que l'on fait :
Code : | Sélectionner tout |
1 2 3 4 | A <- A xor B B <- B xor A A <- A xor B |
Par exemple, sur x86, pour échanger ax et bx :
Code asm : | Sélectionner tout |
1 2 3 4 | xor ax,bx xor bx,ax xor ax,bx |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.