2011-10-07 5 views
2

제목이 꽤 많이 요약되어 있습니다. 저는 학교 프로젝트를 위해 32 비트 MIPS 어셈블리 언어 (MARS 에뮬레이터 사용)로 프로그램을 작성 중이며 int 값이 2,147,483,647 이상인 행운을 보지 않았습니다.MIPS : 사용자의 부호없는 int 값을 syscall을 통해 가져올 수 있습니까?

나는 인터넷과 나의 책에서 쓸모없는 사냥에 알맞은 시간을 보냈다. 이것은 임무의 중심이 아닙니다 (불가능하다는 것을 알게되면, 이미 깨달았을 것입니다). 그러나 호기심이이 고양이를 죽이고 있습니다. 이제이 벽돌 벽에 부딪 혔습니다. 확실히 알아야합니다.

참고 : 나는 특히 부동 또는 더블을 복용에 반대 부호없는 INT를 잡아 수있는 방법을 찾고 있어요

  1. .
  2. 콜와 int를 잡는 표준 코드 :

    li $v0, 5 
    syscall 
    move $t0, $v0 
    
  3. 오류 2 500 000 000 정수에 대한 프롬프트에 전달 될 때 발생합니다

    Error in C:\DEV\....... line 57: Runtime exception at 
    0x004000034: invalid integer input (syscall 5) 
    

이 도와주세요 오비완, 너는 내 유일한 희망이야!

답변

0

다른 시스템 호출을 사용해야합니다. MARS는 MIPS CPU의 "내부"가 아닌 예외를 던집니다. 예를 들어 syscalls 8 또는 12 (문자열 읽기 및 문자 읽기)를 시도하십시오. 결과적으로 이러한 작업을 수행하기 위해서는 더 많은 구문 분석을 구현해야합니다.

http://courses.missouristate.edu/KenVollmar/MARS/Help/SyscallHelp.html

: 또는

, 당신은

MARS의 전체 목록은 온라인이 콜의 ... 더블 (콜 7)를 읽고 정수로 변환 시도 할 수 있습니다

+0

예외 소스에 대한 좋은 지적입니다. 문자열로 읽거나 값을 파싱하거나 다른 숫자 형식을 사용하라는 제안에 대해서 - 저는 이것을 고려해 보았습니다. 그것이 그대로라면, syscall을 통해 서명되지 않은 int를 읽는 지원되는 방법이 있는지 궁금합니다. – chucksmash

+0

답장에 MARS syscall의 전체 목록에 대한 링크를 편집했습니다. 불행히도 해당 항목이 보이지 않습니다. – duskwuff

관련 문제