diff options
Diffstat (limited to 'input/primes-generator.asm')
-rw-r--r-- | input/primes-generator.asm | 94 |
1 files changed, 47 insertions, 47 deletions
diff --git a/input/primes-generator.asm b/input/primes-generator.asm index f772fc3..2fac25f 100644 --- a/input/primes-generator.asm +++ b/input/primes-generator.asm @@ -5,70 +5,70 @@ ;;; you'll find online. That may be better. :) .data - N 5000 - primes 0 + N 5000 + primes 0 .text - addi $5 $2 0x0 ; establish frame pointer - addi $6 $0 0x0 ; establish return argument - jmp MAIN + addi $5 $2 0x0 ; establish frame pointer + addi $6 $0 0x0 ; establish return argument + jmp MAIN TRIAL: - push $5 ;function preamble - addi $5 $2 0x0 - subi $2 $2 0x0 + push $5 ;function preamble + addi $5 $2 0x0 + subi $2 $2 0x0 - load $7 +1($5) ; N (argument) - addi $8 $0 0x2 ; the initial divisor - addi $6 $0 0x0 ; the return value + load $7 +1($5) ; N (argument) + addi $8 $0 0x2 ; the initial divisor + addi $6 $0 0x0 ; the return value - jrl TCOND + jrl TCOND TLOOP: - rem $9 $7 $8 ; check if divisible - cmp $9 $0 - beq END + rem $9 $7 $8 ; check if divisible + cmp $9 $0 + beq END - addi $8 $8 0x1 + addi $8 $8 0x1 TCOND: - cmp $7 $8 - bgt TLOOP + cmp $7 $8 + bgt TLOOP - addi $6 $0 0x1 ; return 1 (signal parameter is prime) + addi $6 $0 0x1 ; return 1 (signal parameter is prime) END: - addi $2 $5 0x0 ; function postamble - pop $5 - ret + addi $2 $5 0x0 ; function postamble + pop $5 + ret MAIN: - push $5 ; function preamble - addi $5 $2 0x0 - subi $2 $2 0x3 + push $5 ; function preamble + addi $5 $2 0x0 + subi $2 $2 0x3 - load $7 N($0) ; N - addi $8 $0 0x2 ; number to test - addi $9 $0 0x0 ; index to store + load $7 N($0) ; N + addi $8 $0 0x2 ; number to test + addi $9 $0 0x0 ; index to store GEN: - store $9 -1($5) ; caller-saved registers - store $8 -2($5) - store $7 -3($5) + store $9 -1($5) ; caller-saved registers + store $8 -2($5) + store $7 -3($5) - push $8 ; push arg - jal TRIAL - addi $2 $2 0x1 + push $8 ; push arg + jal TRIAL + addi $2 $2 0x1 - load $9 -1($5) ; restore registers - load $8 -2($5) - load $7 -3($5) + load $9 -1($5) ; restore registers + load $8 -2($5) + load $7 -3($5) - cmp $6 $0 ; check if return is 0 - beq COMPOSITE + cmp $6 $0 ; check if return is 0 + beq COMPOSITE - store $8 primes($9) ; store prime - addi $9 $9 0x1 + store $8 primes($9) ; store prime + addi $9 $9 0x1 COMPOSITE: - addi $8 $8 0x1 - cmp $7 $8 - bgt GEN - nop - nop - nop + addi $8 $8 0x1 + cmp $7 $8 + bgt GEN + nop + nop + nop |