FreeCalypso > hg > freecalypso-reveng
view objgrep/grep.c @ 269:d0bb4b083595
dsample-fw-disasm: located cinit records for rf_path and synth_*
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 19 Jan 2018 07:20:42 +0000 |
parents | c25367bb7656 |
children |
line wrap: on
line source
/* * objgrep: the actual grep operation */ #include <sys/types.h> #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include "globals.h" do_grep() { uint32_t *match, *mask, *haystack; unsigned matchlen_words, haystack_len_words, haystack_limit; unsigned i, j; match = (uint32_t *)pattern_match; mask = (uint32_t *)pattern_mask; haystack = (uint32_t *)binfilemap; matchlen_words = pattern_len >> 2; haystack_len_words = binfile_tot_size >> 2; haystack_limit = haystack_len_words - matchlen_words; for (i = 0; i <= haystack_limit; i++) { for (j = 0; j < matchlen_words; j++) if ((haystack[i+j] & mask[j]) != match[j]) goto haystack_next; /* got a match! */ match_offset = i << 2; return(1); haystack_next: continue; } return(0); }