struct node { int value; struct node *left, *right;};
이게 지금 $a0으로 들어가는 스트럭트구요. 밑에 코드가 노드 합(지 원래 value + left->value + right->value)을 구하는건데 이게 너무 헷갈려서요.
중간에 jal sum으로 다시 위로 올라가잖아요 left sum을 구해야하니까. 그러면 s0이 다시 맨 위에 저장되고 v0는 0으로 돌아가고..
.. 8은 그러니까 무조건 ra로 되있는거고.. s1은 그 다음꺼, s0은 그 밑에꺼.. sum이 a0가 0일때까지 안끝나니까
첫번째 jal sum은 두번 반복되야 다음으로 넘어가서 s1에 sum저장하는건가요?? 제가 말로해도 이해를 못하고 있으니까 설명이 안되네요..ㅠㅠ
sum :addiu $sp , $sp , -12sw $ra , 8( $sp )sw $s1 , 4( $sp )sw $s0 , 0( $sp )xor $v0 , $0 , $0 beq $a0 , $0 , ret addu $s0 , $a0 , $0 lw $s1 , 0( $s0 )lw $a0 , 4( $s0 )jal sum addu $s1 , $s1 , $v0 lw $a0 , 8( $s0 )jal sum addu $v0 , $s1 , $v0 ret :lw $ra , 8( $sp )lw $s1 , 4( $sp )lw $s0 , 0( $sp )addiu $sp , $sp , 12
jr $ra