| 2448 | } |
| 2449 | |
| 2450 | float score(vector<token> baseline, uint32_t newcomer, uint32_t addr) |
| 2451 | { |
| 2452 | vector<token> toks_child; |
| 2453 | string err; |
| 2454 | string src; |
| 2455 | |
| 2456 | if(disasm_capstone((uint8_t *)&newcomer, addr, src, err)) |
| 2457 | return -1; |
| 2458 | |
| 2459 | /* compare mnemonics before doing more work */ |
| 2460 | string mnem = baseline[0].sval; |
| 2461 | if(src.compare(0, mnem.size(), mnem) != 0) { |
| 2462 | return 0; |
| 2463 | } |
| 2464 | |
| 2465 | /* mnemonics are the same, tokenize now... */ |
| 2466 | if(tokenize(src, toks_child, err)) { |
| 2467 | printf("ERROR: %s\n", err.c_str()); |
| 2468 | return 0; |
| 2469 | } |
| 2470 | |
| 2471 | return fitness(baseline, toks_child); |
| 2472 | } |
| 2473 | |
| 2474 | struct match { |
| 2475 | uint32_t src_hi, src_lo; // source bit range |
no test coverage detected