2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
6 static char rcsid[]= "$Id: emlookup.c,v 0.4 1994/06/24 10:37:09 ceriel Exp $";
14 extern char em_mnem[][4];
16 #define HASHSIZE (2*(sp_lmnem-sp_fmnem))
21 } emhashmnem[HASHSIZE];
26 for(i=0;i<=sp_lmnem-sp_fmnem;i++)
27 enter(em_mnem[i],i+sp_fmnem);
31 unsigned emhash(name) register char *name; {
32 register unsigned sum;
35 for (sum=i=0;*name;i+=3)
36 sum ^= (*name++)<<(i&07);
40 enter(name,value) char *name; {
43 h=emhash(name)%HASHSIZE;
44 while (emhashmnem[h].h_name[0] != 0)
46 strncpy(emhashmnem[h].h_name,name,3);
47 emhashmnem[h].h_value = value;
50 int mlookup(name) char *name; {
53 h = emhash(name)%HASHSIZE;
54 while (strncmp(emhashmnem[h].h_name,name,3) != 0 &&
55 emhashmnem[h].h_name[0] != 0)
57 return(emhashmnem[h].h_value&0xFF); /* 0 if not found */
60 extern char em_flag[];
64 switch(em_flag[mn-sp_fmnem]&EM_PAR) {