.data
msg: .asciiz "Hello World"
.extern foobar 4
.text
.globl main
myarray: .word 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
main:
addi $t0, $zero, 1
addi $t1, $zero, 2
bne $t0, $t1, notequal
j exit
notequal:
add $t0, $t0, $t1
la $s0, myarray
addi $s2, $zero, 10 #s2 = 10
loop:
bge $s1, $s2, exit #if ($s1 >= s3(=10)) { go to exit; }
lw $s3, 0($s0) #$s3 = myarray[0]
addi $s0, $s0, 4 #$s0 값에 4를 더함 = $s0 레지스터 안에 담긴 데이터의 값을, myArray의 다음 Element가 담겨있는 메모리의 주소값으로 만들어준다.
add $t9, $t9, $s3 #$t9 = $t9 + $s3
addi $s1, $s1, 1 #$s1 = $s1 + 1
j loop
exit:
li $v0,10
syscall
뭔가 딱 코딩 태어나서 처음 배울 때랑 같은 느낌인 것 같다.
어셈블리 리버싱할려면 필수지... 근데 어셈블리 기본문법은 이해가 가는데 적용할려면 잘 안 됨