I. Introduction▲
I-A. Contexte▲
Lorsqu'on apprend l'assembleur, c'est souvent pour découvrir le fonctionnement intime d'une machine. En ce sens, le couple 8086/MS-DOS est un formidable outil. Le contexte rassurant fourni par le DOS permet de s'affranchir de bien des difficultés. De même en production, lorsqu'on insère des blocs assembleur dans du C ou du Pascal, pour optimiser un calcul gourmand ou pour appeler un jeu d'instruction spécifique, on reste dans un cadre strict défini par le système d'exploitation.
Copyright material owned by Freescale Semiconductor, Inc. used with permission, 2005.
En informatique industrielle la problématique est souvent différente puisque l'utilisation d'un système d'exploitation n'est pas systématique. Bien souvent un simple moniteur en ROM suffit. De plus il faut pouvoir gérer finement les contraintes de place et garantir des temps d'exécution. Que l'on code en C, Ada ou directement en assembleur, la connaissance approfondie des mécanismes internes de la machine est alors une nécessité.
Nous allons découvrir une famille de machines, particulièrement bien pensée pour les problématiques industrielles : les Motorola ColdFire (MCF).
Pour ceux qui sont très jeunes ou qui ne s'intéressent pas à ces questions, les processeurs Motorola ont connu leur heure de gloire, notamment grâce à la famille des 68000 (on parlera de M68k) qui équipaient les machines de nombreux constructeurs : les Atari ST, les Amiga, les Macintosh (jusqu'au LC 630), ainsi que les stations SGI et SUN avant l'apparition des processeurs MIPS et SPARC, des calculatrices Texas Instruments ... etc...
Le marché des ordinateurs personnels ayant été délaissé au profit des PowerPC développé avec IBM, Motorola semiconductors (depuis devenu Freescale) redéploya la famille des 68000, moyennant des changements architecturaux de poids, dans toute une déclinaison de microcontrôleurs RISC : les DragonBall destinés au PDA et autres smartphones et les ColdFire .
I-B. Limites de ce travail▲
L'objet de ce travail est vaste, voire infini. Nous nous efforcerons de rester dans les limites du processeur embarqué. Cela signifie que nous ne détaillerons pas les unités périphériques, mémoires, caches et coprocesseurs associés à ces machines. Nous nous efforcerons également d'avoir un propos générique, même si notre expérience ne nous permet pas d'affirmer la validité de ce travail pour toutes les variantes de la famille. Le 5307 et le 5206e nous serviront de référence.
Un petit nombre d'instructions de contrôle ainsi que quelques registres particuliers seront volontairement ignorés ici.
L'objet de ce travail est donc clairement de se familiariser avec l'assembleur Motorola, la machine et ses limites, ainsi que la programmation sans système d'exploitation.
Des connaissances minimales en architecture machine et programmation seront nécessaires pour comprendre la suite : décodage et exécution d'une instruction, arithmétique binaire ...
I-C. Remerciements▲
Merci à Martine et Olivia ainsi qu'à Alcatîz pour ses conseils avisées et les corrections orthographiques. Merci également à Rhonda Tanner de Freescale Semiconductor.