Skip to content
Snippets Groups Projects
Commit 504825c0 authored by ACIKBAS TUNA's avatar ACIKBAS TUNA
Browse files

started final fonc

parent 83b8f325
No related merge requests found
.data:
jump: .asciiz "\n"
space: .asciiz " "
seed: .word 0xfaceb00c, 0xdeadbeef
max_float_alea: .float 2147483647
.text:
main:
addi $sp, $sp, -40 #allocation de 5 octets dans la pile
addi $sp, $sp, -68 #allocation de 5 octets dans la pile
#0(sp) = adresse de la pule
#4(sp) = taille de du labyrinte N*N
#8(sp) = adresse de retour vers la fonction main
......@@ -28,8 +31,12 @@ main:
#en argument N, qui est le nombre de lignes uniquement (le labyrinthe est de taille N*N)
jal laby_init
li $a1, 0
jal cellule_voisine
li $a0,0
li $a1, 3
jal alea
move $a0,$v0
li $v0,1
syscall
j Exit
li $t8,0 #cellule dans la quelle nous somme courante
......@@ -363,6 +370,7 @@ gauche_voisine:
move $a1,$s7
jal cellule_voisine_direction
sw $v0,0($t6)
sw $a2,16($t6)
addi $t6,$t6, 4
addi $t5,$t5,1
......@@ -375,6 +383,7 @@ droite_voisine:
move $a1,$s7
jal cellule_voisine_direction
sw $v0,0($t6)
sw $a2,16($t6)
addi $t6,$t6, 4
addi $t5,$t5,1
......@@ -385,6 +394,7 @@ haut_voisine:
move $a1,$s7
jal cellule_voisine_direction
sw $v0,0($t6)
sw $a2,16($t6)
addi $t6,$t6, 4
addi $t5,$t5,1
......@@ -395,6 +405,7 @@ bas_voisine:
move $a1,$s7
jal cellule_voisine_direction
sw $v0,0($t6)
sw $a2,16($t6)
addi $t6,$t6, 4
addi $t5,$t5,1
......@@ -405,7 +416,7 @@ suite:
li $s0,0
li $s1,0
li $s2,0
sw $t5,40($sp)
sw $t5,56($sp)
......@@ -416,7 +427,77 @@ suite:
# Point d'entrée du programme
alea:
sw $ra, 8($sp)
li $a0, 0
li $a1, 101
jal nombre_alea_entre_deux_bornes
move $a0, $v0
li $v0, 1
syscall
j retour_main
# Retourne un nombre aléatoire inclus dans l'intervalle [$a0,$a1[
# Paramètres : a passé dans $a0 et b passé dans $a1
# Pré-conditions : 0 <= $a0 < $a1
# Résultat : le nombre aléatoire dans le registre $v0
nombre_alea_entre_deux_bornes:
# Prologue
sw $ra, 8($sp)
swc1 $f0, 60($sp)
swc1 $f1, 64($sp)
# Corps
jal random_generator
andi $v0, $v0, 0x7fffffff
mtc1 $v0, $f0
cvt.s.w $f0, $f0
lwc1 $f1, max_float_alea
div.s $f0, $f0, $f1
sub $a1, $a1, $a0
mtc1 $a1, $f1
cvt.s.w $f1, $f1
mul.s $f0, $f0, $f1
mtc1 $a0, $f1
cvt.s.w $f1, $f1
add.s $f0, $f0, $f1
cvt.w.s $f0, $f0
mfc1 $v0, $f0
# Épilogue
lw $ra, 8($sp)
lwc1 $f0, 60($sp)
lwc1 $f1, 64($sp)
jr $ra
# Function random_generator
# Retourne un nombre aléatoire entre 0 et 2^32-1
# Paramètres :
# Résultat : Le nombre aléatoire dans $v0
random_generator:
# Prologue
# Corps
lw $t0, seed
andi $t1, $t0, 65535
mulu $t1, $t1, 36969
srl $t2, $t0, 16
addu $t0, $t1, $t2
lw $t1, seed+4
andi $t2, $t1, 65535
mulu $t2, $t2, 18000
srl $t3, $t1, 16
addu $t1 $t2, $t3
sw $t0, seed
sw $t1, seed+4
sll $v0, $t0, 16
addu $v0, $v0, $t1
# Épilogue
jr $ra
modulo_n:
#a0; diviseur
#a1: dividande
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment