feat: even-odd stupidness
This commit is contained in:
parent
b568eca60d
commit
0a48084bb2
3 changed files with 29 additions and 1 deletions
26
experiments/even-odd/create.py
Normal file
26
experiments/even-odd/create.py
Normal 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
|
2
experiments/even-odd/ref.md
Normal file
2
experiments/even-odd/ref.md
Normal 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
2
wiki
|
@ -1 +1 @@
|
|||
Subproject commit b04ae4e652f236922a65fe4fbfdde36da732d24b
|
||||
Subproject commit 88692c6bec89f94416fb7f694ebf364bde71e468
|
Loading…
Reference in a new issue