2016-12-01 6 views
1

지금 당황 스럽습니다. MIPS의 분기 명령어는 얼마나 멀리 이동할 수 있습니까? 실제로 +/- 128 kByte라고 말하는 답변을 발견했습니다. 잘못이 아니라면 2^21 비트가됩니다. 하지만 어떻게 될지 모르겠다. 우리는 대학에서 주어진 시트에 ben이 이렇게 계산됩니다. PC = PC + 4 + BranchAddress. 그리고 BrachAddress 자체는 {14 {즉석 [15], 즉각적인, 2'b0}입니다. 잘못된 것이 아니라면 16 비트 즉치가 있습니다. 여기서 MSB는 14 개의 "장소"로 확장됩니다. 왼쪽과 오른쪽에는 2 개의 0으로 확장됩니다. 그렇다면 BranchAdress가 2^18 비트가되어야한다는 뜻이 아닙니까?브랜치 명령은 MIPS에서 얼마나 멀리 점프 할 수 있습니까?

답변

2

this과 같은 명령어 세트 참조를 확인해야합니다. 18 비트 (16 비트 오프셋 필드는 좌측 2 비트 시프트 된) 오프셋 서명

첨가 : 현재 상태, 예를 들면 그 BEQ 지시

------------------------------------------------------ 
| 6 bit opcode | 5 bit rs | 5 bit rt | 16 bit offset | 
------------------------------------------------------ 

로서 부호화되고, 그 오프셋에 관한 볼 수 분기 지연 슬롯 브랜치 (안 분기 자체) 다음 명령의 주소로하는 PC 상대 유효 타겟 어드레스 이것은 16 비트 값이 2만큼 시프트 한 채로 있다는 것을 의미

을 형성 (곱한 4, 기본적으로 두 단어로 정렬) 서명 된 숫자로 해석됩니다. 이 값은 범위 [-2^17, 2^17 - 1]이므로 [-131072, 131071]입니다. 그러나 값이 분기 이후 명령어에 추가되므로 명령어 자체에 대한 실제 범위는 [-131072+4, 131071+4]입니다.

무조건 점프 BC에 대한 이야기는 오프셋에 대해 26 비트 (여전히 2로 왼쪽으로 이동 됨)를 가지므로 28 비트 부호있는 숫자가 다릅니다.