rdos/lib/popcnt.asm
Nero dc5e437c2d Revert "Remove unused stuff"
debug rom still uses printf

This reverts commit a9fa3d355e.
2020-04-04 11:41:01 +00:00

31 lines
389 B
NASM

popcnt:
push bx
push cx
mov bx, ax
and ax, 0x5555 ; 8x 01
and bx, 0xaaaa ; 8x 10
shr bx, 1
add ax, bx
mov bx, ax
and ax, 0x3333 ; 4x 0011
and bx, 0xcccc ; 4x 1100
mov cl, 2
shr bx, cl
add ax, bx
mov bx, ax
and ax, 0x0f0f ; 2x 00001111
and bx, 0xf0f0 ; 2x 11110000
mov cl, 4
shr bx, cl
add ax, bx
add al, ah
xor ah, ah
pop cx
pop bx
ret