int isSpace(reg_t r, reg_t scratch) { MOVIM8(scratch, ' '); MOVIM8(scratch+1, '\t'); EQ8(scratch+2, r, scratch); EQ8(scratch+3, r, scratch+1); LOR8(scratch+2, scratch+2, scratch+3); return (REG8(scratch+2)); }
int matchOperMem(OPerKind container, OPerKind input ) { if(container == input) return 2; int g = input - oper_m8 ; switch(g){ case 0: //! byte if((container == oper_m8) || (container == oper_rm8)) return 1; break; case 1: //! w if( EQ7(container, m16, rm16, rWDQ, rmWDQ, mWD, rmWD, rmWQ )) return 1; break; case 2: //! d if( EQ8(container, m32, rm32, mWDQ, rmWDQ, rDQ, rmDQ, mWD, rmWD)) return 1; break; case 3: //! q if( EQ7(container, m64, rm64, mWDQ, rmWDQ, mDQ, rmDQ, rmWQ )) return 1; break; case 4: //! xmm if( EQ(container, Xm128 )) return 1; break; case 5: //! m512 break; case 6: //! st default: break; } return 0; }
int matchOperReg(OPerKind container, OPerKind input ) { if(container == input) return 2; if((((input == oper_EAX)||(input == oper_RAX)||(input ==oper_AX)) &&(container == oper_rAX)) || (((input == oper_EAX)||(input ==oper_AX)) &&(container == oper_eAX))) return 1; int g = (input & (7<<3)) >> 3 ; switch(g){ case 0: //! byte if((container == oper_r8) || (container == oper_rm8)) return 1; break; case 1: //! w if( EQ8(container, r16, rm16, rWDQ, rmWDQ, rWD, rmWD, rWQ, rmWQ )) return 1; break; case 2: //! d if( EQ8(container, r32, rm32, rWDQ, rmWDQ, rDQ, rmDQ, rWD, rmWD)) return 1; break; case 3: //! q if( EQ8(container, r64, rm64, rWDQ, rmWDQ, rDQ, rmDQ, rWQ, rmWQ )) return 1; break; case 4: //! qext if( EQ8(container, r64, rm64, rWDQ, rmWDQ, rDQ, rmDQ, rWQ, rmWQ )) return 1; break; case 5: //! xmm if( EQ2(container, xmm, Xm128 )) return 1; break; case 6: //! xmm ext if( EQ2(container, xmm, Xm128 )) return 1; break; case 7: //! st default: break; } return 0; }
void printString(reg_t r, reg_t ret, reg_t scratch) { reg_t temp = scratch; MOV16(temp, r); //temp pointer to string scratch += 2; MOVIM8(scratch, 0); //constant i loop1: MOV8(scratch+1, REG16(temp)); EQ8(scratch+2, R_ZERO, scratch+1); if (REG8(scratch+2)) { goto loop1_end; } printChar(scratch+1); INC8(scratch); INC16(temp); goto loop1; loop1_end: MOV8(ret, scratch); }
void GTE8(reg_t r1, reg_t r2, reg_t r3, reg_t scratch) { EQ8(r1, r2, r3); GT8(scratch, r2, r3); LOR8(r1, r1, scratch); }