안녕하세요, 임시 직원으로 비트를 저장하려고합니다. 레지스터. 이 일을 제대로하고 있습니까? 그리고 나는 그것에, 나는 얼마나 많은 1이 십진수 (0-16)의 바이너리 형식에 있는지 알기 위해 노력하고 있는데, 나는이 일을 올바르게하고 있는가? 여기에 중요한 코드의 덩어리가 잘 (바로 출력하고 무엇을하지 않음)비트를 저장하는 MIPS에 혼란이있다.
# for (i = 0; i <= 16; i++)
li $s0, 0 # i = 0
li $s3, 0 #constant zero
li $s4, 0 #i-2=0
bgt $s0, 16, bottom
top:
# calculate n from i
# Your part starts here
sb $t1, ($s0) #store LSB from number i in t1
sltu $t7,$s3,$t1 # check if t1 is a 1, if it is set t7 = 1
add $s1 ,$s3,$t1 # add 1 to n
ble $s4, 7, bloop # loop through rest of bits
bloop:
srl $t7, $s0, 1 # move bits in i right one, bringing in a zero from the left
sltu $t6, $s3, $t7 # check if t7 is a 1, if it is set t6 to 1
add $s1, $t6, $s1 # add increment n up 1
bgt $s4, 7, continue # break out of loop
continue:
죄송합니다, sb $ t1 ($ s0)에 대한 언급을 잊어 버렸습니다. 오류가 발생했습니다 --- 런타임 예외 0x00400034 : 범위를 벗어난 주소 0x00000000 – user1914650