2014-06-12 1 views
0

점프 명령어 코드를 작성하고 올바른 코드를 작성하는 방법을 알아 내려고하고 있지만 이유는 확실하지 않습니다.MIPS : 점프 명령어 코드 알아보기

그래서,이 경우이 :

 addi $s1, $s1, 0 
     addi $s1, $s1, 0 
     lui $s1, 0x1001 
top: bne $s1, $s2, end 
     addi $s1, $s1, 1 
end: j top 

내가 정답은 0x08100003입니다 j top

의 점프 명령을 알아 내려고합니다. 어떻게 잘 모르겠다.

위쪽의 주소는 0x0040000C입니다.

이렇게 계산하는 빠르고 쉬운 방법은 x * 4 = 대상 주소를 알아내는 것입니다. 따라서, x * 4 = 4 (1) 및 x * 4 = 12 (3). 그래서 저는 왜 명령에 1과 3이 있는지 봅니다.

점프의 opcode는 2hex이므로 0000 10 (opcode의 경우 6 비트)으로 시작합니다. 그렇다면 다음에 무엇을해야할지 모르겠습니다. 나는 지시의 끝이 3이 될 것이라는 것을 알았지 만, 어떻게 1을 어디에 둘 것인지를 아는가?

나는 그것이 의미가 있기를 바랍니다. 도와 주셔서 감사합니다.

답변

2

J에 대한 명령어는 값이 %000010 인 6 비트 연산 코드와 대상 주소의 하위 28 비트가 2 비트 오른쪽으로 이동 한 26 비트로 구성됩니다.

우리가 0x040000C이라면 오른쪽으로 2 비트 이동하고 이진 형식으로 결과를 표시하며 하위 26 비트는 %00000100000000000000000011입니다.

opcode 비트를 앞에 붙이자. %00001000000100000000000000000011이 나온다. 이 숫자를 4 비트 그룹으로 나누면 16 진수 표현을 쉽게 볼 수 있습니다.

0000 1000 0001 0000 0000 0000 0000 0011 
0 8 1 0 0 0 0 3