fork download
  1. .data
  2. x: .long 0
  3. s: .string "%d\n\0"
  4. .text
  5. .global main
  6. main:
  7. pushl $x
  8. pushl $s
  9. call scanf
  10. addl $8, %esp
  11. cmp $3, x
  12. jl zero
  13. bsr x, %ecx
  14. xor %eax, %eax
  15. inc %eax
  16. shl %cl, %eax
  17. mov %eax, %ecx
  18. shr %ecx
  19. add %ecx, %eax
  20. sub x, %eax
  21. cdq
  22. xor %edx, %eax
  23. sub %edx, %eax
  24. sub %ecx, %eax
  25. neg %eax
  26. print:
  27. mov %eax, x
  28. pushl x
  29. pushl $s
  30. call printf
  31. addl $8, %esp
  32. xor %eax, %eax
  33. ret
  34. zero:
  35. xor %eax, %eax
  36. jmp print
Success #stdin #stdout 0s 1728KB
stdin
17
stdout
1