我正在尝试读取32个寄存器,修改其前8位[BIT7:BIT0]并写回其值。 下面的代码是否达到了这个目标?
reg_val = register_read(register_object);
reg_val = ((reg_val & 0xffffff00) | new_value));
register_write(register_object,reg_val);
这也是实现这一目标的最有效方式。感谢任何建议或意见。
答案 0 :(得分:3)
除非new_value
仅保证8位宽,否则应确保它:
reg_val = ((reg_val & 0xffffff00) | (new_value & 0xff));
这也是实现这一目标的最有效方法吗?
任何有价值的编译器都会将其转化为The Right Thing。
答案 1 :(得分:2)
假设new_value
保证< 256,并假设这些是无符号整数,那么是的,这是正确的方法。