I bothered to extract a full mnemonic list from the current Intel instruction manual for future tasks and while I had a list of 1169 words I plugged it into a high speed word matching algorithm to test how fast this type of code is in 64 bit. The attached file loads the word list then tests each word against the algorithm and repeats the test 200000 times to get a long enough timing. The results on this Haswell I am using is a bit over 55 million word matches a second.
Mnemonic count = 1169
Timing, 233800000 word comparisons in 4328 ms
Press any key to continue...
You may like the "jump" macro used in the main loop.
; -----------------------------------------------
lpst:
mov r15, arr ; pointer array address
xor r14, r14 ; zero index
mov cntr, 0 ; set counter to 0
@@:
invoke ismnemonic,QWORD PTR [r15+r14] ; call the word matching algo
add r14, 8 ; next pointer array address
add cntr, 1 ; increment the counter
jump @B IF cntr LT lcnt ; loop again if cntr < lcnt
sub r13, 1 ; decrement outer loop counter
jnz lpst
; -----------------------------------------------