From 176cc04414d44b9eebdc9627c99f9b6e5e92ba98 Mon Sep 17 00:00:00 2001 From: Alex AUVOLAT Date: Tue, 7 Jan 2014 15:51:01 +0100 Subject: Document ; add hlt instruction ; make monitor faster. --- plan_micro.tm | 127 +++++++++++++++++++++++++--------------------------------- 1 file changed, 55 insertions(+), 72 deletions(-) (limited to 'plan_micro.tm') diff --git a/plan_micro.tm b/plan_micro.tm index acfe710..4ef4bda 100644 --- a/plan_micro.tm +++ b/plan_micro.tm @@ -3,14 +3,16 @@ <\body> - > + ||>>> Nous proposons ici une spécification pour un processeur minimaliste 16 bit RISC. - La machine dispose de 8 registres \S généraux \T : + La machine dispose de 8 registres \S généraux \T, tous de taille 16 bits : \; @@ -36,64 +38,48 @@ par les instructions et - De plus, le processeur dispose d'un registre non manipulable, le registre - (program counter). + Ces 8 registres sont tous manipulables par les instructions prenant un + registre comme argument. De plus, le processeur dispose d'un registre + manipulable uniquement par certaines instructions spécifiques, le registre + (program counter : contient l'adresse de l'instruction + courante). Les numéros de registres sont donc codés sur 3 bits. - La mémoire est adressée sur 16 bits, il y a donc 64ko disponnibles. + La mémoire est adressée sur 16 bits et les mots mémoire font 8 bits, il y a + donc 64ko disponnibles. Le CPU est little-endian (le mot 0x1234 est codé 34 puis 12) - - On définit plusieurs zones de mémoire : |>||>||>>>>|Memory map> - - - - - - On définit plusieurs zones de mémoire : + quelques octets sont utilisés)>>||>>>>|Memory map> - |>||>||>||>||>>>>|Memory map> - - Les 0x3000 (12288) octets de mémoire pour le VGA correspondent à un - affichage bitmapé 336x288 noir et blanc (un octet représente 8 pixels), ce - qui fait avec une police d'écriture 8x8 un affichage texte possible en - 42x36. - - Les 0x0800 (2048) octets de RAM pour la fonte suffisent à définir 256 - caractères en résolution 8x8 (donc 8 octets par caractère). + Les bits suivants sont utilisés pour la MMIO : - Sur les 0x8000 octets alloués pour la MMIO, on en aura un pour l'entrée - série, un pour la sortie série, un pour l'horloge et c'est tout. - - Le reste est auto-explicite. + >>>>|>||>||>>>>|Addresses MMIO> Les instructions sont codées sur 16 bits. Les tableaux suivants montrent - les instructions avec les poids forts à gauche et les poids faibles à - droite. + les instructions avec les bits de poids forts à gauche et les bits de poids + faibles à droite (convention contraire à celle exprimée dans le + ). ||||||>|>|>|>>>>>> + bits>||>|>|>|>>>|||>>>> >|||||||||\R> then R>>|>|||||PC+d>>| - signé>>||||>||>||||>||>||||>||>|||||mem+d|)>> + signé>>||||>||>||||>||>||||||>|||||mem+d|)>> (16 bits)>|>|||||+d|)>\R> (16 bits)>|>|||||\mem+d|)> ; R\0> (8 bits)>|>|||||+d|)>\R> @@ -154,6 +141,9 @@ ; R\0>>|>||||>||>||||>||>||||>||>||||>|>>|>>>>|Instructions reconnues par le microproceseur> + L'assembleur propose également quelques instructions \S étendues \T + permettant de faciliter la programmation : + |>|>|>>|>|G-2 ;mem\R @@ -183,36 +173,37 @@ <\references> <\collection> > - > - > - > - > - > - > + > + > + > + > + > + > > + > > - > - > - > - > - > - > - > + > + > + > + > + > + > + > <\auxiliary> <\collection> <\associate|table> - > + > - > + > > + microproceseur|> > + l'assembleur)|> <\associate|toc> |math-font-series||Registres> @@ -223,45 +214,37 @@ |.>>>>|> - |Modèle simple - |.>>>>|> - > - - |Modèle avec affichage bitmapé - |.>>>>|> - > - |math-font-series||Jeu d'instruction> |.>>>>|> - + |Types d'instructions |.>>>>|> - > + > |Format de base |.>>>>|> - > + > |Format |R> |.>>>>|> - > + > |Format |I> |.>>>>|> - > + > |Format K |.>>>>|> - > + > |Format |J> |.>>>>|> - > + > |math-font-series||Tableau d'instructions> |.>>>>|> - + \ No newline at end of file -- cgit v1.2.3