다음 문제에 대한 도움을 바랍니다.어셈블리 : 다음 코드 및 일반적으로 메모리 스택에 값을 저장해야하는 이유
MIPS 어셈블리에서 n을 인수로 받고 큐브인지 확인하는 is_cube 함수를 구현하도록 요청 받았습니다. 예를 들어, 8 (2^3)과 1000 (10^3)은 큐브입니다. $sp
이 과정의 모든 의해 스택에 $s0
을 저장하지 않고,
# UNTITLED PROGRAM
.data
str: .asciiz "Please enter your number >"
str1: .asciiz "The number is a cube"
str2: .asciiz "The number is not a cube"
.text
main:
li $v0 4
la $a0 str
syscall
li $v0 5
syscall
move $t0 , $v0
li $t1, 0
blt $t0, $zero, negative
negative:
sub $t5, $zero, 1
mul $t0, $t0, $t5
is_cube:
addi $t1, $t1, 1
sgt $t2, $t1, $t0
bne $t2, $zero, There_is_not
mul $t3, $t1, $t1
mul $t4 ,$t3, $t1
beq $t4, $t0, There_is
jal is_cube
There_is:
li $v0 4
la $a0 str1
syscall
jal end
There_is_not:
li $v0 4
la $a0 str2
syscall
jal end
end:
하고 작동 :
나는 다음과 같은 코드를 썼습니다. 내 질문은 : 그것을 저장하지 않는 것이 맞습니까? 그렇다면 언제 사용해야합니까?고마워요.
나는 그 질문을 이해하지 못한다. 어디서나 $ s0을 사용하지 않고 있습니다 ... 왜 그걸 저장하겠습니까? – m0skit0