var_4 TF_word_extractor::need_consider(var_1* _word) { var_u4 len = 0u; var_u4 cnt = 0u; var_1* pos = _word; for (; *pos;) { if (0 > *pos) { ++pos; if (!*pos) { return 0; } ++len; } ++pos; ++len; ++cnt; } if (3 > len || 2 > cnt) { return 0; } if (badcode(_word)) { return 0; } if (m_share_container->stop_word(_word)) { return 0; } return 1; }
void v_mnemonic(char *str, MNEMONIC *mne) { int addrmode; SYMBOL *sym; unsigned int opcode; short opidx; SYMBOL *symbase; int opsize; Csegment->flags |= SF_REF; programlabel(); symbase = eval(str, 1); if ( bTrace ) printf("PC: %04lx MNEMONIC: %s addrmode: %d ", Csegment->org, mne->name, symbase->addrmode); for (sym = symbase; sym; sym = sym->next) { if (sym->flags & SYM_UNKNOWN) { ++Redo; Redo_why |= REASON_MNEMONIC_NOT_RESOLVED; } } sym = symbase; if (mne->flags & MF_IMOD) { if (sym->next) { sym->addrmode = AM_BITMOD; if ((mne->flags & MF_REL) && sym->next) sym->addrmode = AM_BITBRAMOD; } } addrmode = sym->addrmode; if ((sym->flags & SYM_UNKNOWN) || sym->value >= 0x100) opsize = 2; else opsize = (sym->value) ? 1 : 0; while (badcode(mne,addrmode) && Cvt[addrmode]) addrmode = Cvt[addrmode]; if ( bTrace ) printf("mnemask: %08lx adrmode: %d Cvt[am]: %d\n", mne->okmask, addrmode, Cvt[addrmode]); if (badcode(mne,addrmode)) { char sBuffer[128]; sprintf( sBuffer, "%s %s", mne->name, str ); asmerr( ERROR_ILLEGAL_ADDRESSING_MODE, false, sBuffer ); FreeSymbolList(symbase); return; } if (Mnext >= 0 && Mnext < NUMOC) /* Force */ { addrmode = Mnext; if (badcode(mne,addrmode)) { asmerr( ERROR_ILLEGAL_FORCED_ADDRESSING_MODE, false, mne->name ); FreeSymbolList(symbase); return; } } if ( bTrace ) printf("final addrmode = %d\n", addrmode); while (opsize > Opsize[addrmode]) { if (Cvt[addrmode] == 0 || badcode(mne,Cvt[addrmode])) { char sBuffer[128]; if (sym->flags & SYM_UNKNOWN) break; sprintf( sBuffer, "%s %s", mne->name, str ); asmerr( ERROR_ADDRESS_MUST_BE_LT_100, false, sBuffer ); break; } addrmode = Cvt[addrmode]; } opcode = mne->opcode[addrmode]; opidx = 1 + (opcode > 0xFF); if (opidx == 2) { Gen[0] = opcode >> 8; Gen[1] = opcode; }
void v_mnemonic(char *str, MNE *mne) { register int addrmode; register SYMBOL *sym; register uword opcode; short opidx; SYMBOL *symbase; int opsize; Csegment->flags |= SF_REF; programlabel(); symbase = eval(str, 1); if (Xtrace) printf("PC: %04lx MNE: %s addrmode: %d ", Csegment->org, mne->name, symbase->addrmode); for (sym = symbase; sym; sym = sym->next) { if (sym->flags & SYM_UNKNOWN) { ++Redo; Redo_why |= 1 << 0; } } sym = symbase; if (mne->flags & MF_IMOD) { if (sym->next) { sym->addrmode = AM_BITMOD; if ((mne->flags & MF_REL) && sym->next) sym->addrmode = AM_BITBRAMOD; } } addrmode = sym->addrmode; if ((sym->flags & SYM_UNKNOWN) || sym->value >= 0x100) opsize = 2; else opsize = (sym->value) ? 1 : 0; while (badcode(mne,addrmode) && Cvt[addrmode]) addrmode = Cvt[addrmode]; if (Xtrace) printf("mnemask: %08lx adrmode: %d Cvt[am]: %d\n", mne->okmask, addrmode, Cvt[addrmode]); if (badcode(mne,addrmode)) { asmerr(5,0); freesymbollist(symbase); return; } if (Mnext >= 0 && Mnext < NUMOC) { /* Force */ addrmode = Mnext; if (badcode(mne,addrmode)) { asmerr(19,0); freesymbollist(symbase); return; } } if (Xtrace) printf("final addrmode = %d\n", addrmode); while (opsize > Opsize[addrmode]) { if (Cvt[addrmode] == 0 || badcode(mne,Cvt[addrmode])) { if (sym->flags & SYM_UNKNOWN) break; asmerr(14,0); break; } addrmode = Cvt[addrmode]; } opcode = mne->opcode[addrmode]; opidx = 1 + (opcode > 0xFF); if (opidx == 2) { Gen[0] = opcode >> 8; Gen[1] = opcode; } else {