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
|
format ELF64
extrn printf
extrn scanf
extrn puts
public main
section '.text' executable
main:
push rbp
mov rbp,rsp
mov edi,prompt
call puts
sub rsp,16
mov rsi,rsp
mov edi,readint
xor eax,eax
call scanf
mov r12,[rsp]
add rsp,16
mov rax,r12
bsr rcx,rax
mov eax,2
shl rax,cl
mov rdx,rax
mov rsi,r12
mov edi,msg
xor eax,eax
call printf
leave
ret
section '.data' writable align 16
msg db "Next power of %lu is %lu",0xA,0
readint db "%lu",0
prompt db "Enter an integer.",0
|