Created
August 8, 2019 19:21
-
-
Save lwerdna/c7b144e0df26f98fcf7f48050880916b to your computer and use it in GitHub Desktop.
Z80 decision tree
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// opening classifier from: /tmp/tmp.pickle | |
// n_nodes: 359 | |
// n_leaves: 180 | |
// max_depth: 25 | |
if(byte1 <= 127) | |
if(byte1 <= 63) | |
if(b8 <= 0) | |
if(b9 <= 0) | |
if(b10 <= 0) | |
if(nybble1 <= 7) | |
if(byte1 <= 20) | |
if(nybble3 <= 0) | |
if(nybble2 <= 4) | |
return NOP(); | |
else | |
return EX(); | |
else | |
return DJNZ(); | |
else | |
return JR(); | |
else | |
if(byte1 <= 12) | |
if(b11 <= 0) | |
return NOP(); | |
else | |
return EX(); | |
else | |
if(byte0 <= 253) | |
return XOR(); | |
else | |
if(byte1 <= 20) | |
return DJNZ(); | |
else | |
return JR(); | |
else | |
return INC(); | |
else | |
return LD(); | |
else | |
if(nybble2 <= 4) | |
if(b9 <= 0) | |
return LD(); | |
else | |
return INC(); | |
else | |
if(nybble2 <= 14) | |
if(nybble2 <= 10) | |
if(b10 <= 0) | |
return ADD(); | |
else | |
if(nybble2 <= 6) | |
return DEC(); | |
else | |
if(b13 <= 0) | |
if(nybble3 <= 0) | |
return RLCA(); | |
else | |
return RLA(); | |
else | |
if(byte1 <= 47) | |
return DAA(); | |
else | |
return SCF(); | |
else | |
return DEC(); | |
else | |
if(b13 <= 0) | |
if(byte1 <= 23) | |
return RRCA(); | |
else | |
return RRA(); | |
else | |
if(byte1 <= 55) | |
return CPL(); | |
else | |
return CCF(); | |
else | |
if(byte1 <= 117) | |
return LD(); | |
else | |
if(nybble2 <= 6) | |
return HALT(); | |
else | |
return LD(); | |
else | |
if(byte1 <= 135) | |
return ADD(); | |
else | |
if(byte1 <= 143) | |
return ADC(); | |
else | |
if(byte1 <= 151) | |
return SUB(); | |
else | |
if(nybble3 <= 9) | |
return SBC(); | |
else | |
if(byte1 <= 167) | |
return AND(); | |
else | |
if(nybble3 <= 10) | |
return UNDEF(); | |
else | |
if(byte1 <= 183) | |
return OR(); | |
else | |
if(b14 <= 0) | |
return CP(); | |
else | |
if(b10 <= 0) | |
if(b9 <= 0) | |
if(b8 <= 0) | |
return RET(); | |
else | |
if(nybble2 <= 5) | |
return POP(); | |
else | |
if(b12 <= 0) | |
if(byte1 <= 217) | |
return RET(); | |
else | |
return JP(); | |
else | |
if(byte1 <= 233) | |
return EXX(); | |
else | |
return LD(); | |
else | |
if(b8 <= 0) | |
return JP(); | |
else | |
if(byte1 <= 223) | |
if(byte1 <= 199) | |
return JP(); | |
else | |
if(nybble2 <= 7) | |
return OUT(); | |
else | |
if(b12 <= 0) | |
if(byte0 <= 191) | |
if(byte0 <= 127) | |
if(nybble1 <= 3) | |
if(b3 <= 0) | |
if(b5 <= 0) | |
if(nybble1 <= 0) | |
return RLC(); | |
else | |
return RL(); | |
else | |
if(nybble1 <= 2) | |
return SLA(); | |
else | |
return SLL(); | |
else | |
if(b4 <= 0) | |
if(b5 <= 0) | |
return RRC(); | |
else | |
return SRA(); | |
else | |
if(nybble1 <= 2) | |
return RR(); | |
else | |
return SRL(); | |
else | |
return BIT(); | |
else | |
return RES(); | |
else | |
return SET(); | |
else | |
return IN(); | |
else | |
if(nybble3 <= 14) | |
return EX(); | |
else | |
if(byte1 <= 247) | |
return DI(); | |
else | |
return EI(); | |
else | |
if(b9 <= 0) | |
if(b8 <= 0) | |
return CALL(); | |
else | |
if(b11 <= 0) | |
return PUSH(); | |
else | |
if(nybble3 <= 12) | |
return CALL(); | |
else | |
if(byte0 <= 126) | |
if(byte0 <= 67) | |
if(byte0 <= 32) | |
if(nybble0 <= 8) | |
return XOR(); | |
else | |
if(nybble0 <= 9) | |
if(b12 <= 0) | |
return XOR(); | |
else | |
return ADD(); | |
else | |
return XOR(); | |
else | |
if(byte0 <= 46) | |
if(b12 <= 0) | |
return XOR(); | |
else | |
if(b0 <= 0) | |
if(b1 <= 0) | |
if(b2 <= 0) | |
return XOR(); | |
else | |
return INC(); | |
else | |
return LD(); | |
else | |
if(byte0 <= 36) | |
if(nybble0 <= 2) | |
return LD(); | |
else | |
return INC(); | |
else | |
if(byte0 <= 42) | |
if(b2 <= 0) | |
return ADD(); | |
else | |
if(byte0 <= 38) | |
return DEC(); | |
else | |
return XOR(); | |
else | |
return DEC(); | |
else | |
if(nybble0 <= 9) | |
if(nybble0 <= 8) | |
if(b2 <= 0) | |
if(b12 <= 0) | |
if(nybble1 <= 3) | |
return XOR(); | |
else | |
if(b0 <= 0) | |
if(byte0 <= 65) | |
return IN(); | |
else | |
return SBC(); | |
else | |
if(byte0 <= 66) | |
return OUT(); | |
else | |
return LD(); | |
else | |
return XOR(); | |
else | |
if(b12 <= 0) | |
return XOR(); | |
else | |
if(b1 <= 0) | |
if(byte0 <= 52) | |
return INC(); | |
else | |
return DEC(); | |
else | |
if(byte0 <= 54) | |
return LD(); | |
else | |
return XOR(); | |
else | |
if(b12 <= 0) | |
return XOR(); | |
else | |
return ADD(); | |
else | |
return XOR(); | |
else | |
if(b12 <= 0) | |
if(b2 <= 0) | |
if(b0 <= 0) | |
if(b1 <= 0) | |
if(byte0 <= 108) | |
return IN(); | |
else | |
if(b3 <= 0) | |
return XOR(); | |
else | |
return IN(); | |
else | |
if(b3 <= 0) | |
return SBC(); | |
else | |
return ADC(); | |
else | |
if(b1 <= 0) | |
if(byte0 <= 109) | |
return OUT(); | |
else | |
if(nybble0 <= 5) | |
return XOR(); | |
else | |
return OUT(); | |
else | |
if(b4 <= 0) | |
if(nybble1 <= 5) | |
return LD(); | |
else | |
return XOR(); | |
else | |
return LD(); | |
else | |
if(byte0 <= 97) | |
if(b1 <= 0) | |
if(byte0 <= 72) | |
if(b0 <= 0) | |
return NEG(); | |
else | |
return RETN(); | |
else | |
if(nybble0 <= 12) | |
return XOR(); | |
else | |
if(b4 <= 0) | |
return RETI(); | |
else | |
return XOR(); | |
else | |
if(b0 <= 0) | |
if(nybble1 <= 4) | |
if(nybble0 <= 10) | |
return IM(); | |
else | |
return XOR(); | |
else | |
return IM(); | |
else | |
return LD(); | |
else | |
if(nybble0 <= 14) | |
if(byte0 <= 105) | |
if(nybble0 <= 6) | |
return XOR(); | |
else | |
return RRD(); | |
else | |
return XOR(); | |
else | |
return RLD(); | |
else | |
if(byte0 <= 91) | |
if(b2 <= 0) | |
return XOR(); | |
else | |
if(nybble0 <= 6) | |
return LD(); | |
else | |
if(byte0 <= 78) | |
if(b3 <= 0) | |
return XOR(); | |
else | |
return LD(); | |
else | |
return XOR(); | |
else | |
if(byte0 <= 117) | |
if(nybble0 <= 14) | |
return LD(); | |
else | |
if(b4 <= 0) | |
return LD(); | |
else | |
return XOR(); | |
else | |
if(b2 <= 0) | |
return XOR(); | |
else | |
if(byte0 <= 118) | |
return XOR(); | |
else | |
return LD(); | |
else | |
if(b6 <= 0) | |
if(b2 <= 0) | |
if(b12 <= 0) | |
if(nybble1 <= 9) | |
return XOR(); | |
else | |
if(b4 <= 0) | |
if(b3 <= 0) | |
if(byte0 <= 160) | |
return LDI(); | |
else | |
if(b1 <= 0) | |
return CPI(); | |
else | |
if(byte0 <= 162) | |
return INI(); | |
else | |
return OUTI(); | |
else | |
if(byte0 <= 168) | |
return LDD(); | |
else | |
if(byte0 <= 169) | |
return CPD(); | |
else | |
if(nybble0 <= 10) | |
return IND(); | |
else | |
return OUTD(); | |
else | |
if(b3 <= 0) | |
if(byte0 <= 176) | |
return LDIR(); | |
else | |
if(b0 <= 0) | |
return INIR(); | |
else | |
if(nybble0 <= 2) | |
return CPIR(); | |
else | |
return OTIR(); | |
else | |
if(byte0 <= 184) | |
return LDDR(); | |
else | |
if(byte0 <= 185) | |
return CPDR(); | |
else | |
if(nybble0 <= 10) | |
return INDR(); | |
else | |
return OTDR(); | |
else | |
return XOR(); | |
else | |
if(b12 <= 0) | |
return XOR(); | |
else | |
if(nybble0 <= 6) | |
if(byte0 <= 157) | |
if(b4 <= 0) | |
return ADD(); | |
else | |
return SUB(); | |
else | |
if(b4 <= 0) | |
return AND(); | |
else | |
return OR(); | |
else | |
if(b0 <= 0) | |
if(b4 <= 0) | |
if(byte0 <= 157) | |
return ADC(); | |
else | |
return UNDEF(); | |
else | |
if(nybble1 <= 10) | |
return SBC(); | |
else | |
return CP(); | |
else | |
if(b1 <= 0) | |
if(nybble1 <= 8) | |
return ADC(); | |
else | |
if(b4 <= 0) | |
return UNDEF(); | |
else | |
if(b5 <= 0) | |
return SBC(); | |
else | |
return CP(); | |
else | |
return XOR(); | |
else | |
if(byte0 <= 224) | |
return XOR(); | |
else | |
if(byte0 <= 225) | |
if(b12 <= 0) | |
return XOR(); | |
else | |
return POP(); | |
else | |
if(byte0 <= 229) | |
if(b0 <= 0) | |
return XOR(); | |
else | |
if(b12 <= 0) | |
return XOR(); | |
else | |
if(byte0 <= 228) | |
return EX(); | |
else | |
return PUSH(); | |
else | |
if(byte0 <= 233) | |
if(nybble0 <= 8) | |
return XOR(); | |
else | |
if(b12 <= 0) | |
return XOR(); | |
else | |
return JP(); | |
else | |
if(byte0 <= 248) | |
return XOR(); | |
else | |
if(byte0 <= 249) | |
if(b12 <= 0) | |
return XOR(); | |
else | |
return LD(); | |
else | |
return XOR(); | |
else | |
if(b8 <= 0) | |
if(nybble3 <= 12) | |
if(nybble2 <= 10) | |
return ADD(); | |
else | |
return ADC(); | |
else | |
if(nybble2 <= 10) | |
if(b13 <= 0) | |
return SUB(); | |
else | |
if(byte1 <= 238) | |
return AND(); | |
else | |
return OR(); | |
else | |
if(b12 <= 0) | |
return UNDEF(); | |
else | |
if(byte1 <= 238) | |
return SBC(); | |
else | |
return CP(); | |
else | |
return RST(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment