1
기본적으로 콘솔에서 문자열을 읽습니다. 문제는 없습니다. 이 문자열의 첫 번째와 세 번째 문자는 0-9 숫자가 될 것이므로이 번호를 메모리에 ıntegers로 저장하여 나중에 다시 사용하길 바랍니다. "PC에서 예외가 발생했습니다 = 0x0040004c"라고 표시되고 중단을 클릭하면 "정렬되지 않은 주소가 가게에 있습니다 : 0x100100c9".MIPS 문자열을 정수로 변환
무엇이 문제입니까? 도와주세요!
편집 : 내가 단계별로 실행하면 오류가 당신은 단어를 저장할 때 단어 경계에서 데이터를 정렬해야
.data
exp: .space 201 #allocate 200 bytes for logic expression to be read from stdin. +1 is for null char.
dimension: .space 8 #allocate 8 bytes for dimensions of environment
.text
main:
li $v0, 8 # load appropriate system call code into register $v0;
# code for reading string is 8
la $a0, exp # load address of string to be read into $a0
li $a1, 201 # load length of string to be read into $a1
syscall # call operating system to perform read operation
la $t0, exp
la $t1, dimension
add $t2,$zero,$zero
lb $t2, 0($t0)
addi $t2, $t2, -48
sw $t2, 0($t1)
li $v0, 10
syscall
감사합니다. 문제가 해결되었습니다. 이 .align 주제에 대해 웹에 대한 연구를 했는데도 왜이 오류가 발생했는지 알 수 없습니다. 그건 그렇고 4, 2는 왜 정렬하지 않습니까? –
@mualloc : mips 아키텍처의 제한 사항입니다. 'lw' /'sw'을 수행하는 명령은 읽기/쓰기 될 단어가 단어 경계 (즉, 주소는 4의 배수)에 있어야한다는 것을 요구합니다. – gusbro