如何访问 MIPS 中字的各个位的状态?
我正在编写一个程序,我需要确定是否设置了位 3 和 6。 我知道我可以旋转一个单词或左/右移动它。
但如何访问各个位的状态呢? 我是否使用像 and/xor 这样的按位运算符?
I'm writing a program and I need to determine if bits 3 and 6 are set. I know that I can rotate a word or left/right shift it.
But how do I access individual bit's state? Do I use a bitwise operator like and/xor?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 0x08 和 0x40 进行按位与运算(假设位 0 是最低位)。 您可以使用 andi 指令来执行此操作。
如果 $t0 是您要测试的值:
如果设置了位 3,则 $t1 将非零;如果设置位 6,$t2 将非零。
You would do a bitwise and with 0x08 and 0x40 (presuming bit 0 is the lowest order bit). You would use the andi instruction to do this.
If $t0 is the value you want to test:
$t1 will be non-zero if bit 3 is set, $t2 will be non-zero if bit 6 is set.
是的,您使用的是按位运算符。 您可以与仅设置了位 3 和 6 的位掩码进行 AND 运算。 然后与零进行比较。
像这样的东西(我已经很长时间没有做过汇编了):
Yes, bitwise operators are what you use. You can AND with a bitmask that has only bits 3 and 6 set. Then do a comparison to zero.
something like (I haven't done assembler in a long time):
在 MIPS 汇编中测试单个位的一种技术是将所需位移至最高有效位位置,并使用 bltz/bgez 测试该位的状态。 在 andi 指令无法用于选择所需位的情况下,这可以节省一条指令。
One technique for testing a single bit in MIPS assembly is to shift the desired bit into the most-significant bit position and use bltz/bgez to test the state of the bit. This saves an instruction in cases where the andi instruction can't be used to select the desired bit.