Possible Solution
Factorial (with for loop)
.equ ZERO, 0 .equ RIP, 1 .equ I, 7 .equ N, 8 .equ RES, 9 .data n: .quad 4 .text movq n(%RIP), %N # load n from data segment orq $1, %ZERO, %RES # res = 1 orq $2, %ZERO, %I # i = 2 jmp forcond # check for_cond forbody: mulq %I, %RES, %RES # res = i*res addq $1, %I, %I # i = i+1 forcond: subq %I, %N, %ZERO # if (n-i>=0) jae forbody # goto forbody movq %RES, n(%RIP) # store res as n in data segemnt halt
Vector-Sum
.equ ZERO, 0 .equ RIP, 1 .equ N, 7 .equ X, 8 .equ I, 9 .equ TMP, 10 .equ RES, 11 .data n: .quad 4 x: .quad 1 .quad 2 .quad 3 .quad 4 .text movq n(%RIP), %N # load n from data segment shlq $3, %N, %N # n = n*8 orq $x, %ZERO, %X # store address x in %X orq %ZERO, %ZERO, %I # i = 0 orq %ZERO, %ZERO, %RES # res = 0 jmp forcond # check for_cond forbody: movq (%X,%I), %TMP # tmp = x[i] addq %TMP, %RES, %RES # res = res + tmp addq $8, %I, %I # i = i+8 forcond: subq %I, %N, %ZERO # if (n-i>0) ja forbody # goto forbody movq %RES, n(%RIP) # store res as n in data segemnt halt