QtSpim 9.1.16 및 9.1.17 모두를 사용해 보았습니다. 모두 입력 문자열의 처음 2자를 "잘라내어"0x0
, 다른 ASCII 문자로 설정했습니다. 올바르게 버퍼에 저장됩니다.QtSpim은 문자열 읽기 후 2 개의 초기 문자를 자릅니다.
User data segment [10000000]..[10040000]
[10000000]..[1000ffff] 00000000
[10010000] 69676944 6c206174 74732061 676e6972 D i g i t a l a s t r i n g
[10010010] 68632061 75762065 6320696f 72746e6f a c h e v u o i c o n t r
[10010020] 616c6c6f 28206572 2078616d 63203031 o l l a r e (m a x 1 0 c
[10010030] 74617261 69726574 00203a29 3433000a a r a t t e r i) : . . . 3 4
[10010040] 00000035 00000000 00000000 00000000 5 . . . . . . . . . . . . . . .
[10010050]..[1003ffff] 00000000
:
예를 들어
.data # ROM area
str_input: .asciiz "Digita la stringa che vuoi controllare (max 10 caratteri): "
.data # RAM area
buffer: .space 11
.text
.globl main
main: li $v0, 4
la $a0, str_input
syscall # syscall to print user message
#------
la $a0, buffer
li $a1, 11
li $v0, 8
syscall
내가 '12345'입력하면, 그 메모리 덤프입니다 : 그건 내가 인터넷에서 찾은 다른 코드가 같은 결과를 제공하더라도, 내 조각이다
QtSpim에 대해 빠진 것이 있습니까? 내 상위 코멘트를
에서 실행 대 단계에 다소 차이가 있음을 말할 수있다. 나는 코드 리뷰를했다. 나는 syscall 4를 추가하여 버퍼를 반향시킨 다음 시스템 콜을 사용하여 프로그램을 종료했다. 싱글 스텝핑이 아니라면, 당신의 시스템 콜 11 이후에, 당신은 "세계의 가장자리에서 떨어져 나간다"(즉, 어떤 코드가 실행됩니까?). 그러나 여기에서는 데이터의 반향과 16 진 덤프 모두 예상되는 결과와 일치합니다. –
저는 실제로 한 발짝 움직였습니다. 그것은 선생님이 우리에게 권고 한 내용입니다. 내가 프로그램을 정상적으로 작동하게한다면, 아무 문제가 없다. 오, 그리고 당신은 시스템 콜 10 힌트에 대해, 나는 그것을 알지 못했다. 하지만 왜 단일 스테핑이 이상한 행동을 일으키는 지 설명 할 수 있습니까? 예를 들어, MARS는 좋은 사람이고 오산하지 않습니다. – LivingSilver94