Nous devons écrire un programme pour le microcontrôleur PIC16F84
La machine ne comprend que :1000A 000F03083168500831285010F308316860099 :1000B 00083128601831681110115811401148112A6 :1000C 000831281018B168B17792001308500103047 :1000D 00086007920023085002030860079200430A7 :1000E 0008500403086007920083085008030860009 :1000F 0006428FF30A000A00B7B280800A500030E99 :10010 0008301A6000A08A7008A010408A8008B182A :10011 00096280B1994282808840027088A00260EA0 :10012 0008300A50E250E09000B118B288B108B2840 Le langage machine
Le fabricant du microprocesseur fournit un nom correspondant à chaque instruction ( mnémonique) que le programmeur utilise ;-------------------------------------------------------------------------- Wait255 MOVLW H'FF' ; attente de 255 cycle Wait ; attente de W cycle MOVWF fAux ; charger le nombre de cycle à attendre Wait10 DECFSZ fAux,1 ; décrémenter et tester GOTO Wait10 RETURN avec le langage Assembleur.
Mais il peut utiliser un langage plus « évolué » : /* Wait : attendre pendant un certain temps */ void Wait255( ) // 255 passages pour ne rien faire { for (int i=0; i<255; i++) ; } le langage C. D'ailleurs pour ce micro, il n'y a pas d'autre langage disponible.
Avec notre PC et son pentium Langage C /* Wait : attendre pendant un certain temps */ void Wait255( ) // 255 passages pour ne rien faire {int i; for ( i=0; i<255; i++) ; } Langage assembleur _TEXT segment dword public use32 'CODE' _Wait255 proc near ?live1@0: push ebp mov ebp,esp push ecx @1: xor eax,eax mov dword ptr [ebp-4],eax @2: inc dword ptr [ebp-4] cmp dword ptr [ebp-4],255 jl short @2 @5: pop ecx pop ebp ret _Wait255 endp _TEXT ends Compilateur Compilateur Assembleur Langage machine ( fichier .obj ou exe )
Une Machine virtuelle est un programme qui simule un microprocesseur Compilateur Le code est traduit en langage machine directement utilisable par le microprocesseur Pe : langage C Interpréteur Il n'y a pas de traduction mais les instructions sont décodées à l'exécutions par un logiciel appelé interpréteur. Pe langage Basic interprété. Machine virtuelle Le code est traduit dans un langage machine destinée à une machine virtuelle. Une Machine virtuelle est un programme qui simule un microprocesseur spécialement adaptée à un langage. Pe : Java ou CLR...
Code source innaccessible Avantages Inconvénients Exécutable dépendant de la machine pour laquelle il est destiné (cible). Compilé Très bonne utilisation des ressources: Rapidité, faible Code source innaccessible interprété mauvaise utilsation des ressources, lent, nécessité la présence de l'interpréteur. Indépendant de la machine cible. Machine virtuelle Compromis entre les deux autres approches. Nécessite la présence d'une Machine virtuelle ou d'un processeur spécialisé. Facilite l'informatique distribuée. Code source innaccessible
Assembleur Basic Fortran ... Séquentielle Programmation Structurée C Pascal ... Objet C++ ADA Pascal Delphy VisualBasic
Le langage C est un langage évolué mais ses créateurs voulaient garder toutes les possibilités de l'assembleur. Ce qui pour eux en était le principe fondamental devient un source de problèmes et d'erreurs pour beaucoup de programmeurs. Aussi de nombreuses implémentations possèdent des mécanismes qui brident les utilisateurs.
A suivre … © F.Minon 2008