2017-10-16 229 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);