如何访问 MIPS 中字的各个位的状态?

发布于 2024-07-17 00:03:54 字数 109 浏览 12 评论 0原文

我正在编写一个程序,我需要确定是否设置了位 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

愛上了 2024-07-24 00:03:54

您可以使用 0x08 和 0x40 进行按位与运算(假设位 0 是最低位)。 您可以使用 andi 指令来执行此操作。

如果 $t0 是您要测试的值:

andi $t1, $t0, 0x08
andi $t2, $t0, 0x40

如果设置了位 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:

andi $t1, $t0, 0x08
andi $t2, $t0, 0x40

$t1 will be non-zero if bit 3 is set, $t2 will be non-zero if bit 6 is set.

柠北森屋 2024-07-24 00:03:54

是的,您使用的是按位运算符。 您可以与仅设置了位 3 和 6 的位掩码进行 AND 运算。 然后与零进行比较。

像这样的东西(我已经很长时间没有做过汇编了):

and     r2, r1, 0x48  # r2 = r1 & 0x48
cmp     r2, 0x48
jz     zzzzzz   #jmp to zzzzz if bits 6 and 3 are set

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):

and     r2, r1, 0x48  # r2 = r1 & 0x48
cmp     r2, 0x48
jz     zzzzzz   #jmp to zzzzz if bits 6 and 3 are set
甜`诱少女 2024-07-24 00:03:54

在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文