2014-02-17 2 views
3

J- 형식 명령어의 주소 인코딩과 관련하여 혼란 스럽습니다. 클래스 노트에서MIPS : J- 형식 명령어 및 주소 인코딩

:

는 L1은 16 진수로 400024입니다 소수의 주소 4194340에서 가정합니다. 바이트 (0x400024)가 아닌 명령어 (0x100009)의 주소로 대상 필드를 채 웁니다.

누군가이 사실을 설명해 주시겠습니까?

답변

3

j 명령이 전달 된 대상으로 점프합니다.

그러나 명령 세트가 32 비트로 제한되고 연산 코드에 6이 사용되므로 점프 대상에 26 개만 사용할 수 있습니다.

이것은 명령어가 현재 IPC의 최상위 비트 몇 개에 목표를 추가하여 작동하므로 거리가 j 인 거리가 제한된다는 것을 의미합니다.

MIPS 명령어 세트는 j 명령어가 발생하면 j 명령어의 26 비트 타겟에 IPC의 처음 6 비트를 추가하지만 그 대신 명령어 점프 할 수있는 단어는 항상 "단어 맞춤"입니다. 즉,이 주소는 항상 4의 배수이므로 주소의 마지막 2 비트는 항상 0입니다.

이렇게하면 점프 대상에서 마지막 2 비트를 인코딩하지 않고 비트 3-28을 인코딩 할 수 있습니다. 즉, j 명령어의 대상을 얻으려면 PC의 처음 4 비트를 가져와 점프 대상을 추가 한 다음 두 개의 0을 추가합니다.

잘하면 비켜, 설명과 함께 대상 0x400024는 비트 0x1000090x400024 >> 2하여 j 명령으로 인코딩되는 이유 이해된다. 왜냐하면 마지막 두 비트는 필요하지 않기 때문입니다.

+0

0x400024에서 0x100009로 변경하는 데 필요한 단계를 설명해 주시겠습니까? 0x400024를 4로 나누면 0x100009가되는 것을 볼 수 없습니다. –

+0

0x100006이어야한다고 생각했습니다. –

+0

다시 생각해보십시오. 0x24 = 32 + 4 = 36. 36/4 = 9 –