정렬 오류가 발생하는 이유는 무엇입니까? 유사한 줄 la $t0, mainB
이 제대로 실행 되더라도 la $t0, mainF
을 실행하면 오류가 발생합니다. 이것은 MIPS에서 처음 코딩 한 것이므로 약간의 연구를했고 주소 정렬이 무엇을 의미하는지 모호하게 생각했지만 컴파일러는이 런타임 예외를 던지기 전에 4를 추가하는 부분까지 도달하지 못합니다.단어 경계 (MIPS)에 정렬되지 않은 주소 가져 오기
.data
mainF:
.byte 1
mainB:
.byte 1
mainN:
(has '.word's, generic tests for the program itself)
newline:
.asciiz "\n"
textFw:
.asciiz "The integers in order:\n"
textBw:
.asciiz "The integers in backwards order:\n"
.text
main:
# Function prologue
addiu $sp, $sp, -24 # allocate stack space -- default of 24 here
sw $fp, 0($sp) # save caller's frame pointer
sw $ra, 4($sp) # save return address
addiu $fp, $sp, 20 # setup main's frame pointer
# Put mainF into $s0
la $t0, mainF
lw $s0, 0($t0)
# Put mainB into $s1
la $t0, mainB
lw $s1, 0($t0)
...
당신의 말을 잡아라, 나는 그것이 줄 번호를 보여주지 않았다는 것을 깨닫지 못했다. 나는 그것을 지적했다. 보다 나은? 심지어 그것이 왜 저를 던져 버릴지도 모른다고 설명하는 것이 도움이 될 것입니다. (도움말 포럼을 사용하는 것을 주저하는 이유입니다. 아무도 도와주고 싶지 않습니다.) – Alyssa
그래, 답변하기 쉽게 작성하는 방법을 보여주기 위해 질문을 다시 작성했습니다. – Gabe