Skip to main content
Fixed stupid numbers mistake.
Source Link

x86 assembly language (FASM). The argument and the result are in eax register.

It works properly for -2E302^30 < N < +2E30+2^30-1

16 bytes executable code.

 use32 f_n: lea edx, [2*eax] xor edx, eax btc eax, 30 shl edx, 1 jnc .end neg eax .end: retn 

x86 assembly language (FASM). The argument and the result are in eax register.

It works properly for -2E30 < N < +2E30-1

16 bytes executable code.

 use32 f_n: lea edx, [2*eax] xor edx, eax btc eax, 30 shl edx, 1 jnc .end neg eax .end: retn 

x86 assembly language (FASM). The argument and the result are in eax register.

It works properly for -2^30 < N < +2^30-1

16 bytes executable code.

 use32 f_n: lea edx, [2*eax] xor edx, eax btc eax, 30 shl edx, 1 jnc .end neg eax .end: retn 
Source Link

x86 assembly language (FASM). The argument and the result are in eax register.

It works properly for -2E30 < N < +2E30-1

16 bytes executable code.

 use32 f_n: lea edx, [2*eax] xor edx, eax btc eax, 30 shl edx, 1 jnc .end neg eax .end: retn