2017-10-16 6 views
0

인코딩 된 MIPS 명령어를 보유하는 변수 inst가 있다고 가정합니다. 다른 필드를 변경하지 않고 rt 필드를 0으로 설정하려고합니다. rt 필드는 16-20에서 인덱싱 된 5 비트 필드입니다. 내가 먼저 시도하십시오 RT 필드에 0을 설정또는 마스크를 사용한 비트 조작

inst = inst & ~(1 << 16); 

그리고 나는 RT 필드에 새로운 변수 new_reg의 값을 넣고 싶습니다. 나는 시도했다 :

inst = inst | (new_reg << 16); 

누구나이 두 줄의 코드가 맞는지 확인할 수 있습니까?

답변

1

나는이 문제가 첫 번째 비트 마스크에 있다고 생각한다. 명령 (1 < < 16)은 16-20의 모든 비트를 마스킹하려는 첫 번째 비트 만 마스크합니다. 시도 : 다음

inst = inst & ~(0x3f << 16) 

:

inst = inst | (new_reg << 16);