-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtzcount.asm
47 lines (41 loc) · 1.18 KB
/
tzcount.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
; tzcount.asm
; part of kalulu
; (c) 2017, Brian Stephenson
; brian@bstephen.me.uk
;
;/**************************************************************
; * EXECUTABLE CODE *
; **************************************************************/
[section .text]
global tzcount
;/****************************************************************
; * PROCEDURE - tzcount(ulong) *
; ****************************************************************/
%push maincontext
tzcount: equ $
%stacksize flat
%assign %$localsize 0
%arg lsb:dword, \
msb:dword
enter %$localsize, 0
mov eax, [lsb]
or eax, [msb]
jnz tz_00
mov eax, 64
jmp tz_99
tz_00: equ $
mov eax, [lsb]
or eax, eax
jz tz_01
bsf edx, eax
mov eax, edx
jmp tz_99
tz_01: equ $
mov eax, [msb]
bsf edx, eax
add edx, 32
mov eax, edx
tz_99: equ $
leave
ret
%pop