This is an old revision of the document!
La langage Alfy ASM est le langage d'assemblage de l'ordinateur ALF32. Cette unité centrale de traitement (CPU) virtuelle a:
Alfy ASM est simulé en utilisant la verion 4 de CPUSim. Pour utiliser ce simulateur il faudra:
Pour exécuter une simulation, vous pouvez l'exécuter en mode interactif ou non interactif.
Lire les instructions d'installation installation instructions.
Pour exécuter CPUSim, ouvrez un shell et écrivez
java -classpath .:richtextfx-fat-0.6.10.jar cpusim.Main -m alf_computer32.cpu -t file.asm
Cela ouvrira l'interface utilisateur (UI), charger alf_computer32.cpu et le file.asm.
Pour exécuter CPUSim, ouvrez un shell et écrivez
java -classpath .:richtextfx-fat-0.6.10.jar cpusim.Main -c -m alf_computer32.cpu -t file.asm
Cela va charger alf_computer32.cpu et le file.asm.
Après avoir chargé une machine et un programme, pour l'exécuter:
| 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 |