All pastes #2057074 Raw Edit

Stuff

public text v1 · immutable
#2057074 ·published 2011-05-11 22:12 UTC
rendered paste body
main
    mov rbp, rsp
    add rsp, -40
    mov r1, 2

main_loop
    push r1
    call check_for_prime
    
    mov r2, rbp
    mov r3, r1
    mov r4, 4
    mul r3, r4
    sub r2, r3
    mov [r2], r0
    
    add r1, 1
    cmp r1, 10
    je main_hlt
    jmp main_loop


main_hlt
    hlt

check_for_prime :
    push rbp
    mov rbp, rsp
    
    ; we are going to use r0, r1 and r2
    ; however, r0 is the return register, so we do not need to save its value
    push r1
    push r2
    
    mov r0, rbp
    add r0, 8
    mov r0, [r0]
    
    mov r1, 2 ; r1 is the number we check against r0
    
check_for_prime_loop :
    mov r2, r1
    mul r2, r2
    cmp r2, r0
    jg check_for_prime_return_true
    
    mov r2, r0
    mod r2, r1
    cmp r2, 0
    jz check_for_prime_return_false
    
    add r1, 1
    jmp check_for_prime_loop
    
check_for_prime_return_false :
    mov r0, -1
    jmp check_for_prime_return

check_for_prime_return_true :
    mov r0, 1
    jmp check_for_prime_return
    
check_for_prime_return :
    pop r2
    pop r1
    pop rbp
    ret