假设我有一个包含编码MIPS指令的变量inst。我想将rt字段设置为0而不更改其他字段。 rt字段是从16-20索引的5比特字段。我第一次尝试:
inst = inst & ~(1 << 16);
将rt字段设置为0.然后我想将新变量new_reg的值放入rt字段。我试过了:
inst = inst | (new_reg << 16);
有人能确认这两行代码是否正确吗?
答案 0 :(得分:1)
我认为问题在于你的第一个位掩码。命令(1&lt;&lt; 16)仅屏蔽第一位,其中要屏蔽16-20中的所有位。尝试:
inst = inst & ~(0x3f << 16)
然后:
inst = inst | (new_reg << 16);