0

如果我理解正确,寄存器文件是一个整数数组。所以我首先需要将寄存器 $a0 转换为二进制,对吗?一旦我这样做了,我将如何访问它的各个位?我想我可能需要使用掩码,但在我对它进行 ORed 或 ANDed 之后,我想不出一种方法来访问寄存器的各个元素。

谢谢

4

1 回答 1

2

您不会“将整数转换为二进制”。整数作为位存储在寄存器中。二进制是整数的文本表示

您想用 AND 屏蔽寄存器的各个位,并测试该结果是否为非零。

// Assuming 32-bit registers
int reg = .... // Your register...
int count = 0;
for (int i=0; i<32; i++) {
    uint32_t mask = 1<<i;
    if (reg & mask)
        count++;
}
于 2012-11-26T04:50:46.773 回答