68
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 20 Sep 2026
68 points (97.2% liked)
Programmer Humor
33359 readers
836 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
- If the mod doesn't find it funny, you're banned. Ha-ha!... For real: do not use the community for "statements". There are other places for such content. Keep it chill and funny.
founded 3 years ago
MODERATORS
What, specifically, are you trying to solve?
For each operation my CPU's ALU can do, I need to find a bit mask that turns it on only for the desired set of 8 bit opcodes. The bit mask is of the form
[01_].[01_][01_][01_][01_][01_][01_][01_][01_]where 0 and 1 mean the bit has to match and _ means it doesn't matter. The bit before the . is the xor of all the other bits in the opcode.The solver has to figure out both which opcodes represent each instruction and what bit masks are needed to give them the desired operations.
EDIT
I ultimately switched to a slightly different approach. It turns out the xor part of the mask isn't very useful since the combinations I need aren't super complicated. The trouble was that an operation could only trigger for a power of 2 of opcodes, so I added a secondary mask to each operation:Base mask: still
[01_]x8\Secondary mask:
[01_x]x8 (x means both 0 and 1)For the secondary mask, 1 matches only if the current bit or the one to the left is true (left of the leftmost is the rightmost). 0 is the same but with nand in stead of or. x, requiring both, only matches if exactly one matches.
Using 1 or 0 multiplies the number of matching opcodes by 3/4 (or a more complicated fraction if their areas of influence overlap), which allows much more freedom.
Due to restrictions in the game and my "hard"ware, I'm only able to use
[1_x]for the secondary mask, since a nand gate doesn't respond right to being hooked up to a bunch of toggleable and inputs but xor/or gates do (xor is just as fast in game).I think you're trying to solve a NP Complete problem (Boolean Satisfiability) via brute force. It's expected you will hit this wall. Try to use heuristics/guess work.