在x86汇编中加总所有1位

时间:2017-04-07 09:33:54

标签: assembly addition bits

我真的不知道自己在做什么...... 我们的目标是将所有的1加起来,如果它甚至这样说,如果它的奇怪说是这样的话 C / C ++部分给出了传递给asm的变量

/views/home.html 

这是我的主意。它没有输出任何东西。 序言和结语只是我从其他工作中粘贴和粘贴的东西,这些工作很好,所以无视那些,我知道它们可能是垃圾

这是我的asm

/views/home.ejs

我该怎么办?我完全迷失了,而且我很害怕......

1 个答案:

答案 0 :(得分:2)

它可以简化很多,主要是通过摆脱所有堆栈框架业务(它没有必要,没有动态堆栈分配)和使用df而不是分支。

您可以使用setcc计算int32_t的位数,然后测试计数是否为偶数,

popcnt

使用奇偶校验标志的另一种简单方法,但它只检查低字节的奇偶校验,因此首先需要一点减少,

isBitCountEven PROC PUBLIC
    mov eax, dword ptr [esp + 4]
    popcnt eax, eax
    test al, 1
    setz al    ; if the lowest bit of the count is zero, its even
    ret
isBitCountEven ENDP