Sha256: fb9326f94af233b39f2e2dc13824162381dc3e2bc6af2d3ebcd4b6788a169622

Contents?: true

Size: 1.65 KB

Versions: 396

Compression:

Stored size: 1.65 KB

Contents

# Compute the Scrabble score for a given word.
#
# Strategy: use a look-up table to increment the current score by value of each letter
#
# $a0 - input, pointer to null-terminated string of chars
# $v0 - output, integer representing word score
# $t0 - letter value lookup table
# $t1 - an encountered character

.globl scrabble_score

scrabble_score:
        li      $v0, 0                  # Reset set to 0.
        la      $t0, lettervals         # Load address of lookup into register.

loop:
        lb      $t1, 0($a0)             # Load a character,
        beq     $t1, $zero, done        # if end of string, return true.

        addi    $t2, $t1, -65           # If less than 'A'...
        blt     $t2, $zero, increment   # continue to next letter.

        addi    $t1, $t1, -97           # Find offset from 'a'.
        blt     $t1, $zero, downcase    # If negative, presume upper case, so downcase

score_letter:
        sll     $t1, $t1, 2             # compute offset in bytes
        addu    $t1, $t1, $t0           # use it to calcute address in lookup,
        lw      $t3, 0($t1)             # retrieve its integer value,
        addu    $v0, $v0, $t3           # add letter score to word score

increment:
        addi    $a0, $a0, 1             # Finally, increment the pointer
        j       loop                    # and loop.

downcase:
        addi    $t1, $t1, 32            # Upper -> lower ascii value
        j       score_letter

done:
        jr      $ra

.data

                # A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q   R  S  T  U  V  W  X  Y  Z
lettervals: .word 1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.119 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.118 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.117 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.116 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.115 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.114 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.113 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.111 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.110 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.109 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.108 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.107 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.106 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.105 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.104 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.103 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.102 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.101 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.100 tracks/mips/exercises/scrabble-score/example.mips
trackler-2.2.1.99 tracks/mips/exercises/scrabble-score/example.mips