2014-06-23 1 views
0

숙제를하고 있는데, 질문 중 하나는 0x8008FFC0을 MIPS 어셈블리 언어 명령어로 디코딩하고 명령어 유형을 작성하는 것입니다. 0x8008FFC0은 1000으로 변환됩니다 0000 0000 1000 1111 1111 1100 0000, 및 100000 명령어는 lb입니다. 'MIPS 참조 데이터'를보고 있습니다. "그린 시트" ', 그리고'코어 명령어 세트 '에 나열되어 있지 않습니다. 심지어 명령 유형도 있습니까? 이유가 있다면? MIPS 0x8008FFC0 명령어 유형이 없습니까?

는 감사

+0

[여기] (http://onlinedisassembler.com/odaweb/)에서 볼 수 있듯이 lb $ 8, -64 ($ 0)'이며 본질적으로 I 유형 지침입니다 –

답변

1

MIPS의 프로세서의 세 가지 명령어 종류가 있습니다, R은 I 및 MIPS 프로세서에서

J.

는 R 형 지침은 연산 코드 000000, 그래서이 사람은 할 수 없습니다 R 형 지시.

J 명령어는 PC를 이동시키고 [opcode] [target] 형식을가집니다. lb는 우리를 움직이지 않고 그 형식을 갖지 않으므로 J가 될 수 없습니다.

유일한 옵션은 I이고 lb는 [opcode] [src] [dest] [immediate ], here을 볼 수 있듯이 I 형 명령입니다.

희망이 있습니다.

this 녹색 시트라고 가정합니다. 첫 번째 페이지에서 "핵심 명령어 세트"라는 테이블을 보았습니다.로드 x 명령어가 나열되어 있으며 모두 I 타입이므로 lb도 I 타입이라고 추측하는 것이 합리적입니다. (특히로드 바이트 unsigned는로드 바이트와 동일한 명령어 유형이어야합니다.)

명령어를 사용하는 방법을 알고 있다면 lb $ t offset ($ s)이라고 생각하면됩니다. 두 개의 레지스터 ($ s와 $ t)와 즉 치값 (오프셋)을 참조합니다. 그리고 그걸로 당신은 그것이 내가 타자임을 알 수 있습니다.

opcode 및 funccode에 대한 질문 사항. opcode는 명령어의 처음 6 비트이며, 컴퓨터가 무엇을해야 할지를 결정하기 위해 가장 먼저 보는 것입니다. 6 비트이므로 64 개의 가능한 값이 있습니다. 이것은 모든 I 형 및 J 형 명령어를 고유하게 식별하기에 충분하지만 사용 가능한 명령어의 수를 늘리기 위해 R 형 명령어는 약간 다르게 식별됩니다. 모든 R 유형 명령어는 000000의 연산 코드를 가지며 컴퓨터는 함수 코드라고하는 마지막 5 비트를 통해이를 구분합니다.

+0

답장을 보내 주셔서 감사합니다. 멀리, 내 질문은 어떻게 내가 "그린 시트"로 이것을 할 것입니다. 나는 다른 것을 가져갈 수 없을 것이다. MIPSopcode (31:26) (1) MIPSfunct (5 : 0) (2) MIPSfunct (5 : 0)를 설명 할 수 있습니까? – user3754212