Differences

This shows you the differences between two versions of the page.

Link to this comparison view

alf:res:alfycomputer_32 [2017/05/09 18:07]
alexandru.radovici
— (current)
Line 1: Line 1:
-====== Ordinateur ALF 32 ====== 
- 
-===== Architecture ===== 
-La langage Alfy ASM est le langage d'​assemblage de l'​ordinateur ALF32. Cette unité centrale de traitement (CPU) virtuelle a: 
- 
-  * Une architecture Harvard (RAM du programme et RAM de données sont séparées) 
-  * 32 octets des instructions 
-  * 64 registres de 32 octets de largeur (r0 à r63) 
-  * 49 Ko de RAM 
-  * 49 Ko de RAM de programme 
- 
-<​note>​Tous les accès RAM doivent être alignés de 4 octets</​note>​ 
- 
-===== Simulation ===== 
- 
-Alfy ASM est simulé en utilisant la verion 4 de [[http://​www.cs.colby.edu/​djskrien/​CPUSim/​|CPUSim]]. Pour utiliser ce simulateur il faudra: 
-  - Télécharger la version 4 [[http://​www.cs.colby.edu/​djskrien/​CPUSim/​CPUSim4.0.9.zip|CPUSim]] 
-  - Télécharger [[https://​raw.githubusercontent.com/​alexandruradovici/​alf-alfy-asm-language-public/​master/​alf_computer32.cpu|alf_computer32.cpu]] 
-  - Chargez-le dans le simulateur ​ 
- 
-Pour exécuter une simulation, vous pouvez l'​exécuter en mode interactif ou non interactif. 
- 
-{{ :​alf:​res:​cpusim.png?​600 |}} 
- 
-Lire les instructions d'​installation [[http://​www.cs.colby.edu/​djskrien/​CPUSim/​Version4InstallationInstructions.txt|installation instructions]]. 
- 
-==== Mode Interactif ==== 
-Pour exécuter CPUSim, ouvrez un shell et écrivez 
- 
-<code bash> 
-java -classpath .:​richtextfx-fat-0.6.10.jar cpusim.Main -m alf_computer32.cpu -t file.asm 
-</​code>​ 
- 
-Cela ouvrira l'​interface utilisateur (UI), charger alf_computer32.cpu et le file.asm. 
- 
-==== Le Mode Non-Interactif ==== 
-Pour exécuter CPUSim, ouvrez un shell et écrivez 
- 
-<code bash> 
-java -classpath .:​richtextfx-fat-0.6.10.jar cpusim.Main -c -m alf_computer32.cpu -t file.asm 
-</​code>​ 
- 
-Cela va charger alf_computer32.cpu et le file.asm. 
- 
-===== Exécuter un programme ===== 
-Après avoir chargé une machine et un programme, pour l'​exécuter:​ 
- 
-   * Dans la barre de menu, aller à //Execute// et sélectionnez //Assemble & load//. Cela rassemblera le programme et va le charger dans la mémoire du programme 
-   * Dans la barre de menu, aller à //Execute// et sélectionnez //Debug//. Cela changera l'​interface utilisateur en mode débogage. Vous pouvez sélectionner plusieurs options: 
-    * //Start Over// - redémarrer le programme 
-    * //Go// - exécutez le programme 
-    * //Step by Instr// - avance une instruction dans le programme 
-    * //Back one Instr// - retourner une instruction dans le programme 
- 
-{{:​alf:​res:​assemble.png?​200|}}{{:​alf:​res:​debug_mode.png?​200|}}{{:​alf:​res:​debug.png?​200|}} 
- 
-===== Le Langage Alfy ASM ===== 
- 
-^ Instruction ^ Equivalent ^ 
-| set r1 //value// (16 bits) | r1 = value | 
-| mov r1 r2 | r1 = r2 | 
-| load r1 r2 | r2 = MEM [r1] | 
-| store r1 r2 | MEM [r1] = r2 | 
-| pload r1 r2 | r2 = PMEM [r1] | 
-| pstore r1 r2 | PMEM [r1] = r2 | 
-| push r1 | sp = sp - 4 \\ MEM [sp] = r1 | 
-| pop r1 | r1 = MEM [sp] \\ sp = sp + 4 | 
-| pushsp | temp = sp \\ sp = sp - 4 \\ MEM [sp] = temp | 
-| popsp | sp = MEM [sp] | 
-| jmp label | goto label | 
-| run label | sp = sp - 4 \\ MEM [sp] = ip \\ goto etiquete | 
-| ret | sp = sp + 4 \\ ip = MEM [sp] | 
-| (pseudo) label_title:​ | label label_title | 
-| stop | stop the program | 
-| add r1 r2 r3 | r1 = r2 + r3 | 
-| sub r1 r2 r3 | r1 = r2 - r3 | 
-| mul r1 r2 r3 | r1 = r2 * r3 | 
-| div r1 r2 r3 | r1 = r2 / r3 | 
-| mod r1 r2 r3 | r1 = r2 mod r3 | 
-| dec r1 value (unsigned 16 bits) | r1 = r1 - value | 
-| inc r1 value (unsigned 16 bits) | r1 = r1 + value | 
-| test r1 r2 | t = r1 - r2 | 
-| je label | if t = 0 goto label | 
-| jne label | if t != 0 goto label | 
-| jg label | if t > 0 goto label | 
-| jge label | if t >= 0 goto label | 
-| jl label | if t < 0 goto label | 
-| jle label | if t <= 0 goto label | 
-| and r1 r2 r3 | r1 = r2 AND r3 (bitwise, bit by bit) | 
-| or r1 r2 r3 | r1 = r2 OR r3 (bitwise, bit by bit) | 
-| xor r1 r2 r3 | r1 = r2 XOR r3 (bitwise, bit by bit) | 
-| shl r1 r2 (left shift) | r1 = r1 << r2 | 
-| shr r1 r2 (right shift) | r1 = r1 >> r2 | 
-| read r1 | r1 = read character from keyboard | 
-| write r1 | write character r1 to the display | 
-| readnumber r1 | r1 = read number from keyboard | 
-| writenumber r1 | write number r1 to the display | 
  
alf/res/alfycomputer_32.1494342464.txt.gz · Last modified: 2017/05/09 18:07 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0