2010-12-08 7 views
0
beq $s1, $s2, endif(assume endif is 22 instructions after the branch) 

대답에 BEQ MIPS 명령을가 다음과 같은 질문에 이진

000100 10001 10010 0000000000001111 

누군가가 어떤 수단 "ENDIF이 분기 이후 22 개 지침 가정"설명 할 수있다보기?

유용한 데이터 : BEQ에 대한

연산 코드는 $ S1은 $ S2 난 그냥 우리가 ENDIF입니다 마지막 부분을 얻을 방법을 이해하는 데 도움이 필요 10001

입니다 10010
입니다 000100
입니다.

답변

2

beq 다음에 22 번째 명령으로 건너 뛰고 싶습니다. 다음 21 개의 명령을 건너 뜁니다. 이제 십진수 21 (건너 뛸 명령어 수) 인 10101 바이너리가됩니다. 그런 점프에 대한 지시는 0001 0010 0011 0010 0000 0000 0001 0101이 될 것이며 작성한 것이 아닙니다 (분기 오프셋이 잘못됨).

MIPS에서 모든 명령어가 동일한 크기 (4 바이트)이므로 분기가 점프 할 단어 수 (각 4 바이트)를 계산해야합니다.

참고로,이 값들은 2의 보수로 인코딩됩니다. 앞으로 건너 뛰면 이진수로 그 번호를 읽어야하며, 거꾸로 있다면 "보자"에 2의 보수를 적용해야합니다 .

관련 문제