37 lines
1.6 KiB
Python
37 lines
1.6 KiB
Python
|
mnemonics = [
|
||
|
"un", "tx", "nop", "add8", "add16", "add32", "add64", "sub8", "sub16",
|
||
|
"sub32", "sub64", "mul8", "mul16", "mul32", "mul64", "and", "or", "xor",
|
||
|
"slu8", "slu16", "slu32", "slu64", "sru8", "sru16", "sru32", "sru64",
|
||
|
"srs8", "srs16", "srs32", "srs64", "cmpu", "cmps", "diru8", "diru16",
|
||
|
"diru32", "diru64", "dirs8", "dirs16", "dirs32", "dirs64", "neg", "not",
|
||
|
"sxt8", "sxt16", "sxt32", "addi8", "addi16", "addi32", "addi64", "muli8",
|
||
|
"muli16", "muli32", "muli64", "andi", "ori", "xori", "slui8", "slui16",
|
||
|
"slui32", "slui64", "srui8", "srui16", "srui32", "srui64", "srsi8",
|
||
|
"srsi16", "srsi32", "srsi64", "cmpui", "cmpsi", "cp", "swa", "li8", "li16",
|
||
|
"li32", "li64", "lra", "ld", "st", "ldr", "str", "bmc", "brc", "jmp", "jal",
|
||
|
"jala", "jeq", "jne", "jltu", "jgtu", "jlts", "jgts", "eca", "ebp",
|
||
|
"fadd32", "fadd64", "fsub32", "fsub64", "fmul32", "fmul64", "fdiv32",
|
||
|
"fdiv64", "fma32", "fma64", "fcmplt32", "fcmplt64", "fcmpgt32", "fcmpgt64",
|
||
|
"itf32", "itf64", "fti32", "fti64", "fc32t64", "fc64t32", "lra16", "ldr16",
|
||
|
"str16", "jmp16",
|
||
|
]
|
||
|
from collections import Counter
|
||
|
mnemonics = [s.encode('utf-8') for s in mnemonics]
|
||
|
|
||
|
for ii in range(0, 1000000):
|
||
|
def mh(s):
|
||
|
h = 0
|
||
|
mask32 = (1 << 32) - 1
|
||
|
mul = ii # 0x4F6CDD1D
|
||
|
for c in s:
|
||
|
h ^= c * mul
|
||
|
h *= mul
|
||
|
h = h & mask32
|
||
|
return h & 0xffff
|
||
|
ct = Counter(mh(s) for s in mnemonics)
|
||
|
# n = sum(1 if c == 2 else 0 for c in ct.values())
|
||
|
n = 0
|
||
|
c = ct.most_common(1)[0][1]
|
||
|
if c == 1 and n == 0:
|
||
|
print(ii, n)
|