From 4c3cc78a7af5c77726c58f035fa54244e24e9feb Mon Sep 17 00:00:00 2001 From: Alex AUVOLAT Date: Wed, 15 Jan 2014 11:00:26 +0100 Subject: Move documentation ; add template for report on CPU. --- doc/plan_micro.tm | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 doc/plan_micro.tm (limited to 'doc/plan_micro.tm') diff --git a/doc/plan_micro.tm b/doc/plan_micro.tm new file mode 100644 index 0000000..158ffb5 --- /dev/null +++ b/doc/plan_micro.tm @@ -0,0 +1,256 @@ + + + + +<\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, tous de taille 16 bits : + + \; + + <\itemize> + 0. Registre ou zéro (valant tout le temps 0...) + + 1. Registre + + 2. Registre + + 3. Registre + + 4. Registre + + 5. Registre , écrit par certaines instructions + (multiplication, division...) et utilisé préférentiellement comme + registre temporaire pour certaines instructions composées + + 6. Registre , ou (return adresse), écrit + par l'instruction + + 7. Registre , ou (stack pointer), utilisé + par les instructions et + + + 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 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> + + Les bits suivants sont utilisés pour la MMIO : + + >>>>|>||>||>>>>|Addresses MMIO> + + + + Les instructions sont codées sur 16 bits. Les tableaux suivants montrent + les instructions avec les bits de poids forts à gauche et les bits de poids + faibles à droite (convention contraire à celle exprimée dans le + ). + + + + ||||||>|>|>|>>>|||>>>> + + >|||||||||>|>|>|>>|>>|>>>>> + + >||||||>|>|>|>>>>> + + ||||||||>|>|>|>>|>>>>> + + >||||||>|>|>>>>> + + + + Certain noms d'instuctions sont en , il s'agit de signifier + qu'il s'agit d'un alias (optionnel) pour une autre instruction. + + |>>|>|>>|>|>|>>|||||R+R>>|>|||||R-R>>|>|||||lo\R|)>>>|>|||||hi\R|)>> + si R>>|>|||||q,R|)>>>|>|||||r,R|)>> + si R>>|>||||||>||||||>||||||>||||||>|||||\R|)>>>|>|||||\R|)>>>|>|||||\R|)>>>|>|||||not + \R|)>>>|>|||||\R|)>>>|>||||>||>|||||\R|)>> + (logical)>|>|||||\R|)>> + (arith)>|>||||>||>||||>||>|||||=R?1:0|)>>>|>|||||\R?1:0|)>>>|>|||||\\R?1:0|)>>>|>|||||\R?1:0|)>>>|>|||||\\R?1:0|)>>>|>|||||\R?1:0|)>>>|>|||||>>| + signé>>|||||d|)>>>| + signé>>|||||PC+d>>|>||||| + ; PC\PC+d>>|>||>|||R>>|>||>||| + ; PC\R>>|>|||||=R> then R>>|>|||||\R> then R>>|>|||||\R> then R>>|>|||||\R> then + R>>|>|||||\R> then R>>|>|||||\R> then + R>>|>|||||PC+d>>| + signé>>||||>||>||||>||>||||||>|||||mem+d|)>> + (16 bits)>|>|||||+d|)>\R> + (16 bits)>|>|||||\mem+d|)> + ; R\0> (8 bits)>|>|||||+d|)>\R> + (8 bits)>|>|||||mem+R|)>> + (16 bits)>|>|||||+R|)>\R> + (16 bits)>|>|||||\mem+R|)> + ; R\0> (8 bits)>|>|||||+R|)>\R> + (8 bits)>|>|||||\d>>|>|||||\d + ; R\0>>| non + signé)>>|||||\d>>|>|||||\d + ; R\0>>|>|||>||sign_extend>>| + signé)>>||||>||>||||>||>||||>|>>|>>>>|Instructions + reconnues par le microproceseur> + + L'assembleur propose également quelques instructions \S étendues \T + permettant de faciliter la programmation : + + |>|>|>>|>|G-2 ;mem\R + >>|>>|||>, >>|>|mem ; + G\G+2>>|, >>|||, 2>>|>>|R>>|, >, >>||R+d>>|>|>>|not + R>>|,Z>>>|, + addr>| then addr>>|>|||>|, addr>|0> then + addr>>|>|||>>>>|Instructions + supplémentaires (produites par l'assembleur)> + + \ + + +<\initial> + <\collection> + + + + + + +<\references> + <\collection> + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + > + + + +<\auxiliary> + <\collection> + <\associate|table> + > + + > + + > + + > + + <\associate|toc> + |math-font-series||Registres> + |.>>>>|> + + + |math-font-series||Mémoire> + |.>>>>|> + + + |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