173 lines
3.1 KiB
ArmAsm
173 lines
3.1 KiB
ArmAsm
.name "Oh, You Fork my TRALALA ..."
|
||
.comment "HMMMM, my ding-ding-dong !!"
|
||
|
||
# LD : charge la valeur du 1er param dans le registre
|
||
|
||
# ST : stocke la valeur du registre vers le second paramètre.
|
||
|
||
# ADD : Additionne les 2 premiers registres, et met le résultat dans le 3eme.
|
||
|
||
# SUB : Soustrait les 2 premiers registres, et met le résultat dans le 3eme.
|
||
|
||
# AND : Applique un & (ET bit-a-bit) sur les 2 premiers registres, et met le
|
||
# résultat dans le 3eme.
|
||
|
||
# OR : Applique un OU (bit-a-bit) sur les 2 premiers registres, et met le
|
||
#résultat dans le troisième.
|
||
|
||
# XOR : Fait un OU exclusif bit a bit (c'est comme un OU normal, mais 1^1 = 0)
|
||
|
||
# ZJMP : saute a l'adresse si le carry est a 1.
|
||
|
||
# LDI : additionne les 2 premiers, traite ca comme une adresse, y lit une valeur
|
||
# de la taille d’un registre et la met dans le 3eme.
|
||
|
||
# STI : additionne les 2 derniers, utilise cette somme comme une adresse ou
|
||
# sera copiee la valeur du 1er param
|
||
|
||
# FORK : Crée un nouveau processus, qui hérite des différents états de son père,
|
||
# à part son PC, qui est mis à (PC + (1er paramètre % IDX_MOD)).
|
||
|
||
# LLD : similaire a ld sans la restriction de IDX_MOD (ici 512) (a confirmer)
|
||
|
||
# LLDI : Pareil que ldi, mais n’applique aucun modulo aux adresses.
|
||
|
||
# LFORK : Pareil qu’un fork sans modulo à l'adresse.
|
||
|
||
# AFF : affiche sur la sortie standard le char ASCII
|
||
|
||
entry:
|
||
st r1, 6
|
||
st r1, r3
|
||
live %42
|
||
fork %:hanibalsmith
|
||
zjmp %:move1
|
||
|
||
hanibalsmith:
|
||
live %42
|
||
st r15, -50
|
||
st r15, -64
|
||
st r15, -78
|
||
st r15, -92
|
||
st r15, -106
|
||
st r15, -120
|
||
st r15, -134
|
||
st r15, -148
|
||
st r15, -162
|
||
st r15, -176
|
||
st r15, -190
|
||
st r15, -204
|
||
st r15, -218
|
||
st r15, -232
|
||
st r15, -246
|
||
st r15, -260
|
||
st r15, -274
|
||
st r15, -288
|
||
st r15, -302
|
||
st r15, -318
|
||
st r15, -332
|
||
st r15, -346
|
||
st r15, -360
|
||
st r15, -374
|
||
st r15, -388
|
||
st r15, -402
|
||
st r15, -416
|
||
st r15, -430
|
||
st r15, -444
|
||
st r15, -458
|
||
st r15, -472
|
||
st r15, -486
|
||
st r15, -500
|
||
st r16, 1
|
||
live %42
|
||
fork %:hanibalsmith
|
||
zjmp %:hanibalsmith
|
||
|
||
forking:
|
||
live %898
|
||
fork %:move2
|
||
live %1892
|
||
fork %:move2
|
||
live %4024
|
||
fork %:move2
|
||
live %232
|
||
fork %:move2
|
||
|
||
move1:
|
||
st r1, 6
|
||
live %5
|
||
fork %:move1
|
||
zjmp %9
|
||
|
||
move2:
|
||
st r1, 6
|
||
live %42
|
||
fork %:move2
|
||
zjmp %1
|
||
|
||
move3:
|
||
st r1, 6
|
||
live %42
|
||
fork %:move3
|
||
zjmp %2
|
||
|
||
move4:
|
||
st r1, 6
|
||
live %7
|
||
fork %:move4
|
||
zjmp %3
|
||
|
||
move5:
|
||
st r1, 6
|
||
live %1
|
||
fork %:move5
|
||
zjmp %4
|
||
|
||
hanibalsmith2:
|
||
live %512
|
||
st r14, 1
|
||
st r14, -203
|
||
st r14, -406
|
||
st r14, -609
|
||
st r14, -803
|
||
st r14, -1006
|
||
st r14, -1209
|
||
st r14, -1403
|
||
st r14, -1606
|
||
st r14, -1809
|
||
st r14, -2003
|
||
st r14, -2206
|
||
st r14, -2409
|
||
st r14, -2603
|
||
st r14, -2806
|
||
st r14, -3009
|
||
st r14, -3203
|
||
st r14, -3406
|
||
st r14, -3609
|
||
st r14, -3803
|
||
st r14, -4006
|
||
st r14, -4209
|
||
st r14, -4403
|
||
st r14, -4606
|
||
st r14, -4809
|
||
st r14, -5003
|
||
st r14, -5206
|
||
st r14, -5409
|
||
st r14, -5603
|
||
st r14, -5806
|
||
st r14, -6009
|
||
st r14, -6203
|
||
st r14, -6406
|
||
st r14, -6609
|
||
st r14, -6803
|
||
st r14, -7006
|
||
st r14, -7209
|
||
st r14, -7403
|
||
st r14, -7606
|
||
st r14, -7809
|
||
st r14, -8003
|
||
st r1, 6
|
||
live %1
|
||
zjmp %:hanibalsmith2
|
||
fork %:hanibalsmith2
|