필자는이 프로그램을 MIPS에서 작성하여 2로 나에게 주어진 힘을 계산하고 순차적 인 힘을 0으로 줄입니다. 예를 들어 아래 코드에서 $ a0에 4를 넣으면 그것은 (4^2) + (3^2) + (2^2) + (1^2)을 15로 계산해야합니다. 이것은 내가 지금까지 쓴MIPS의 반복 작성
main:
addi $a0, $zero, 4 #put k in $a0 in this case
addi $a1, $zero, 0 #put 0 in current sum
addi $v1, $v1, 0 #tally the total in $v1
for:
lw $10, $a0 #load k into reg $10
lw $11, $a1 #load sum into $11
addi $10, $10, -1 #subtracts 1 from k
li $9, 0 #sets i in for loop ($9) to 0
이 무슨 짓입니다 :
li $v0, 10
syscall
내가 MIPS에 새로 온 사람이 마무리에 많은 도움을 사용할 수 있습니다, 제가 루프를 사용하려는 알고 ,하지만 k에서 1을 뺀 값을 계산하는 동안 그것을 통과하는 방법을 모르겠습니다. 어떻게하면 2의 힘을 k의 힘으로 가져올 수 있겠습니까? mips에는 전력 작업이 없다고 생각하기 때문입니다. 과정의이 시점에서 나는 add, sub, and, 또는 slt, addi, j, beq, lw, sw 및 sll만을 사용할 수 있습니다. sub를 사용할 때 상수를 사용할 수 없습니까? 어떤 도움을 주셔서 감사합니다
2의 거듭은 2를 곱하는 것과 같지 않습니다.) – m0skit0
@ m0skit0 orly? 2 * 2 * 2 <> 2^3? – RobertB
어이, 질문을 읽으십시오 : * "나는 (4^2) + (3^2) + (2^2) + (1^2)"를 계산하고 싶다. – m0skit0