# -----------------------------------------------------------
# 621.701 PR Rechnerorganisation
# -----------------------------------------------------------
# Aufgabenblatt 2, Beispiel 1
#
# Autor: Christian Timmerer <christian.timmerer@itec.uni-klu.ac.at
# Datum: 2003/10/12
# -----------------------------------------------------------

.data

.text
.globl main
main:
  addi $a0, $zero, 9
  addi $a1, $zero, 3

begin:
  add $t0, $zero, $a0	# $t0 = $a0
  slt $t1, $t0, $a1	# if ($t0 < $a1) { $t1 = 1 } | bei $a0<$a1 passiert nichts
  beq $t1, $zero, init	# if ($t1 = 0) { goto init }
  addi $t1, $zero, 0	# $t1 = 0
  j finish		# goto finish

init:
  addi $t1, $zero, 0	# $t1 = 0 | $a0>=$a1; überflüssig, weil $t1 schon 0 beinhaltet

loop:
  slt $t2, $t0, $a1	# if ($t0 < $a1) { $t2 = 1 }
  bne $t2, $zero, finish
  sub $t0, $t0, $a1	# $t0 = $t0 - $a1 | $a0-$a1
  addi $t1, $t1, 1	# $t1 = $t1 + 1   | $t1++
  j loop		# goto loop

finish:
  add $v0, $zero, $t1	# $v0 = $t1 (Ergebnis)

  jr $ra			# jump back in kernel