MIPS RISC计数存储在寄存器$ a0中的非零位数

时间:2012-11-26 04:48:32

标签: mips

如果我理解正确,寄存器文件是一个整数数组。所以我首先需要将寄存器$ a0转换为二进制,对吧?一旦我完成了,我将如何访问其各自的位? 我想我可能需要使用一个掩码,但在ORed或AND之后我无法想到访问寄存器中各个元素的方法。

谢谢

1 个答案:

答案 0 :(得分: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++;
}