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 |