자, 기본적으로 내가 가지고있는 문제는 이것입니다.동적 메모리를 사용하여 MIPS에 문자열을 저장할 수 있습니까?
구조체를 동적으로 저장하는 MIPS 프로그램을 작성하도록 지정되었습니다.
기본적으로 ID, 연도, 제목 및 설명이 저장됩니다. 이진 검색 트리를 사용하여 저장해야합니다.
C++로 스택을 코딩 한 적이 있다면, 내가 무슨 말을하는지 알 것입니다. ID와 제목을 메모리에 동적으로 저장했습니다. 하지만 사용자가 입력 한 문자열을 저장하는 데 문제가 있습니다.
:이 복잡한 문제이며 다음은이 :
좀 도와 수 있을지는 소품 있도록 온라인으로 찾을 수있게되었습니다 많은 정보가 아니라 내 메모리 설정입니다
$ S5 - 상점 루트 노드
$ S7 - (필요 없음) 나무의 크기는
각 새 항목은 344 바이트의 덩어리가 들어 상점
,536 91,363,210바이트 같은 설치 위치 :
8 바이트 - [ID]
8 바이트 - [년]
64 바이트 - [TITLE]
256 바이트 - [설명]
8 바이트 - [LastNodeAddress]
8 바이트 - [NextNodeAddress]
0,123,516여기에 코드 그리고 당신은 문제가 나타날 수 있습니다
li $v0, 9 #allocate memory for new record
li $a0, 344 #enough memory for 2 addresses and all the data
syscall
move $s0, $v0 #hang onto the initial address of all our info
li $v0, 4 #prompt for ID
la $a0, addid
syscall
li $v0, 5 #enter integer
syscall
sw $v0, 0($s0) #store our ID into memory Offset: 0
li $v0, 4 #prompt for add year
la $a0, addyear
syscall
li $v0, 5 #enter integer
syscall
sw $v0, 4($s0) #store year into our memory Offset: 4
li $v0, 4 #prompt for add title
la $a0, addtitle
syscall
li $v0, 8 #read title into titlebuffer
la $a0, titlebuffer
li $a1, 64
syscall
sw $a0, 8($s0) #store title into our memory Offset: 8
li $v0, 4 #prompt for add description
la $a0, adddescription
syscall
li $v0, 8 #read from input into descriptionbuffer
la $a0, descriptionbuffer
li $a1, 256
syscall
sw $a0, 72($s0) #store description into our memory Offset: 72
bne $s7, 0, setlocations #if this isn't root node let's set the locations
add $s7, $s7, 1 #add 1 to the size of the records
move $s5, $s0 #store this address as root node for now
문제가 저장되는 것 모두가 버퍼의 주소인지입니다.
.data
titlebuffer: .space 64
descriptionbuffer: .space 256
은 내가 끝낼 것은 내가 , 할당 된 메모리에 저장 바로 주소를 내가 어떻게 할당 된 메모리에 문자열을 저장하는 아무 생각이 : 버퍼는이처럼 내 데이터 섹션에 정의되어 있습니다.
도움이 될 것입니다. :)
여기 그것입니다 : D : D : D : D : D 선생님이 내가 놓친 믿을 수 없어 어떻게하는지 보여 주었다 대신 라 $ A0의 descriptionbuffer 대신 라 $ A0의 , XX titlebuffer 사용 : 라 $ a0, 8 ($ s0) 라 $ a0, 72 ($ s0) 동일한 것을 인쇄하십시오! :) 호프가 도움이되기를 바랍니다. – user1274820