2017-10-16 414 views
0

假設我有一個變量inst,它包含一個編碼的MIPS指令。我想將rt字段設置爲0而不更改其他字段。 rt字段是從16-20索引的5位字段。我第一次嘗試:使用位掩碼或掩碼

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

這臺RT場爲0,然後我想提出一個新的變量new_reg的值到室溫領域。我試過了:

inst = inst | (new_reg << 16); 

任何人都可以確認這兩行代碼是否正確?

回答

1

我認爲問題出在您的第一個位掩碼上。該命令(1 < < 16)僅屏蔽第一個位,您要屏蔽16-20中的所有位。嘗試:

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

然後:

inst = inst | (new_reg << 16);