E8BC : quelle est la suite ?

Nous disposons à présent d’instructions permettant :

  • de copier des données de registre à registre et de registre à mémoire (MOV op1,op2)
  • de placer une valeur dans les registres (MOVI op1,op2)
  • d’effectuer des opérations arithmétiques et logiques (ADD,ADC,SUB,SBC,ORA,ANDA)
  • des structures de contrôle (JMP, JXX)
  • des input/output (IN, OUT)

Quelle est la suite ?

Tout d’abord, 2 opérations arithmétiques élémentaires ne sont pas disponibles : multiplication et division. Les premiers microprocesseurs n’en disposaient pas car il n’y avait pas de place sur la puce pour les circuits nécessaires. Ces opérations étaient réalisées par des routines en ROM. Dans l’optique de minimiser la complexité du microprocesseur E8BC, c’est également la méthode que nous choisirons. Et en plus, cet exercice me tente 😉
Pour accélérer les traitements, il serait utile d’ajouter 2 registres (D,E) pour conserver les résultats intermédiaires, ainsi qu’un registre compteur (C).

Appeler ces routines nécessite d’implémenter les instructions CALL / RETURN, qui elles même nécessitent de pouvoir travailler avec une pile. Ce qui nécessite à son tour d’implémenter les instructions PUSH/POP, et d’ajouter un registre SP (Stack Pointer).

Enfin, trois améliorations à envisager :

  • en priorité, un programme assembleur  (développé par exemple en python) pour éviter de devoir coder directement en code machine. Laisser l’assembleur calculer lui-même les références mémoires devient rapidement très utile au fur et à mesure que le code se complique.
  • on aura besoin de signaux de contrôle supplémentaires, il faudra adapter le contrôleur;
  • pour accélérer le débogage, une possibilité d’exécuter instruction par instruction (step), sans devoir passer par chaque impulsion d’horloge nécessaire une à une;
  • et enfin, la gestion des interruptions pour les entrées/sorties (plutôt qu’une attente active qui gaspille des ressources pour rien).

Et bien voilà, on a du pain sur la planche ! 😛

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s