Skip to content

Instantly share code, notes, and snippets.

@MrPowerGamerBR
Created December 13, 2017 21:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MrPowerGamerBR/2d1a3dd75cbcff3464c3c6ceed76854e to your computer and use it in GitHub Desktop.
Save MrPowerGamerBR/2d1a3dd75cbcff3464c3c6ceed76854e to your computer and use it in GitHub Desktop.
# *iniciando variáveis por favor ignorar*
addi $s0, $zero, 2
addi $s1, $zero, 5
# *iniciando variáveis por favor ignorar*
# m (s0) = 2
# n (s1) = 5
# s2 = somatória
#
# Fazer a somatória entre os números m e n, ou seja, se for 2 e 5, o programa
# irá fazer 2 + 3 + 4 + 5 e guardar o resultado em s2
# MIPS é pobre e tosco e não é possível fazer algo como "$s3 = $s0"...
# Ou seja, para nós podermos fazer isso, é necessário usar o ADD e somar $s0 com... 0
# Porque, "$s3 = $s0 + 0" que, no final, será "$s3 = $s0"
add $s3, $s0, $zero
# O $s3 será a nossa "index", o que nós iremos ir "somando" a cada loop para verificar
# se devemos sair do loop... ou não!
# Nós iremos salvar o valor de $s2 em $s0, já que o número inicial da somatória será $s2
# (no caso, 2)
add $s2, $s0, $zero
# Agora é a hora de fazer um loop! :clap:
LOOP:
# Isto seria equivalente a "if ($s1 == $s3) { * código no rótulo de FIM * }"
beq $s1, $s3, FIM
# Caso $s1 é diferente de $s3, as próximas linhas serão executadas...
# Primeiro iremos somar +1 na nossa "index"
# Pra que nós precisamos fazer isso? Simples! Porque nós verificamos ali em cima no "beq"
# se a nossa index é igual a s3, caso seja, nós saimos do loop
#
# Ou seja, na primeira vez que entrar no loop será algo como "se 2 é 5, vá para FIM", na
# segunda vez é "se 3 é 5, vá para FIM" e assim vai indo
addi $s3, $s3, 1 # Isto seria a mesma coisa que "$s3 = $s3 + 1"
# Depois iremos somar o valor de $s3 no valor de $s2
add $s2, $s2, $s3 # Isto seria a mesma coisa que "$s2 = $s2 + $s3"
# E agora iremos ir para o rótulo "LOOP", ou seja, de volta para o "beq"
j LOOP
# ^ Como nós fizemos um jump, qualquer linha que nós colocarmos aqui em diante não será executada :O
# Mágica? Talvez
FIM:
# Acabou, é isso, bye bye
# Ou seja, se nós colocarmos qualquer outra linha de código aqui em diante, o programa só irá executar ela ao
# sair do loop, como não é necessário, acaba por aqui o programa, yay!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment