Exemplo n.º 1
0
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));
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
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);
}
Exemplo n.º 5
0
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);  
}