On Monday 04 January 2016 21:27:07 enae wrote: > vu qu'un compilateur transforme du code lisible par un humain en code > machine, comment sait-il en quoi il doit transformer ce code lisible par > un humain? > comment connait-on les spécifications du "code machine"? (je devine que > cela est certainement une suite de 0 et de 1, et très certainement > fortement dépendant du processeur et de son architecture) > comment le processeur sait-il ce qu'il a à faire en voyant ce code machine? > comment est chargé ce code machine dans le processeur ? (j'aurai > tendance à penser à grub, mais, à la mise sous tension du processeur, à > t+1 qu'est-ce qui fait le processeur commence à faire une tâche?)
Prenons cet exemple d'une instruction assembleur du processeur Motorola série 6800 : charger l'accumulateur A (load) de la valeur 1000 (binaire) : LDAA #0X1000 (load A value 1000 binary) Code en hexadécimal : CE 1000 Code machine compréhensible par le processeur : 1100 1110 1000 Exemple plus simple, mettre à zéro l'accumulateur A : CLRA (Clear Accumulateur A) Code en hexadécimal : 4F Code machine compréhensible par le processeur : 0100 1111 Équivalent de RAZ accumulateur A avec load : charger l'accumulateur A (load) de la valeur 0000 (binaire) : LDAA #0X0000 (load A value 0000 binary) Code en hexadécimal : CE 0000 Code machine compréhensible par le processeur : 1100 1110 0000 Le # exprime une valeur binaire. Je ne suis plus sûr si c'est LDAA ou LDA... On voit qu'il serait impossible de programmer en hexadécimal et pire en code machine, d'où la nécessité de créer un langage à la portée de l'humain. André