This is an old revision of the document!


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

Tous les accès RAM doivent être alignés de 4 octets

Simulation

Alfy ASM est simulé en utilisant la verion 4 de CPUSim. Pour utiliser ce simulateur il faudra:

  1. Télécharger la version 4 CPUSim
  2. Télécharger alf_computer32.cpu
  3. Chargez-le dans le simulateur

Pour exécuter une simulation, vous pouvez l'exécuter en mode interactif ou non interactif.

Lire les instructions d'installation installation instructions.

Mode Interactif

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.

Le Mode Non-Interactif

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.

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

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