1
0
Fork 0

feat: even-odd stupidness

This commit is contained in:
Strix 2024-01-30 15:48:58 +01:00
parent b568eca60d
commit 0a48084bb2
No known key found for this signature in database
GPG key ID: 5F35B3B8537287A7
3 changed files with 29 additions and 1 deletions

View file

@ -0,0 +1,26 @@
import struct
import time
bitWidth = 32
startTime = time.time()
with open('isEven.bin', 'wb') as file:
file.write(b"\x31\xC0") # XOR EAX, EAX
for i in range(2**bitWidth):
print(f"[{round(time.time() - startTime, 1)}s elapsed] status: {i}/{2**bitWidth} ({2**bitWidth - i} left)", end='\r')
ib = struct.pack("<I", i) # Encode i as 32 bit little endian integer
file.write(b"\x81\xF9" + ib) # CMP ECX, i
if i%2 == 0:
file.write(b"\x75\x03") # JNE +3
file.write(b"\xFF\xC0") # INC EAX
file.write(b"\xC3") # RET
else:
file.write(b"\x75\x01") # JNE +1
file.write(b"\xC3") # RET
file.write(b"\xC3") # Fallback RET

View file

@ -0,0 +1,2 @@
This idea is from this deranged post:
https://andreasjhkarlsson.github.io//jekyll/update/2023/12/27/4-billion-if-statements.html

2
wiki

@ -1 +1 @@
Subproject commit b04ae4e652f236922a65fe4fbfdde36da732d24b
Subproject commit 88692c6bec89f94416fb7f694ebf364bde71e468