2012-03-13 3 views
0

분기 주소가 MIPS로 어떻게 계산되는지 이해할 수 없습니다. 여기 MIPS에서 분기 주소 계산

는 프로그램 카운터 (PC)에 발생하는 큰 그림이다 : 나는 오프셋 수 PC에 추가되기 전에 signed-extended입니다 이유를 참조 PC = PC + 4 + ((signed-extended offset)<<2)

,이 설정 될 필요가 단지 16 비트 값이다 32 비트 값으로 변환하지만, 왜 우리는 left double shift 부호 확장 번호가 필요합니까? 우리는 즉각적인 값 (등록)로부터의 오프셋 (offset) 때 우리는 <<2을하지 않는 이유, : , 나는 질문을 확장 할 주제에 우리 동안

(또한, <<2 우리가 4에 의하여 수를 곱하는 것을 의미한다)?

감사합니다.

답변

1

알아 두어야 할 중요한 사항은 명령어가 이고 4 바이트가으로 정렬되어 있다는 것입니다. 따라서 두 개의 최하위 주소 비트를 저장할 필요가 없기 때문에 16 비트 변위를 사용하여 2^18 바이트 범위를 지정할 수 있습니다.

또한 데이터를 바이트 단위로 주소 지정해야하므로 데이터의 이동이 이동되지 않음을 알 수 있습니다.

1

주소는 4의 배수 여야하므로 자동으로 4를 곱하면 실제로 사용하기 위해 더 중요한 비트가 남습니다. (즉, 실제로는 18 비트가 실제로있는 것과 같습니다.)