Example #1
0
void SeniorVMHandle::d_sub(long _register1,long _register2)
{
  d_not(_register1);
  pop(T_INVALID);
  pop(T_TMP_REGISTER8);
  d_add(T_TMP_REGISTER8,_register2);
  //  pop(T_INVALID);
  pop(T_TMP_REGISTER6); //eflag 1
  d_copy_stack();
  d_not_and();
  pop(T_TMP_REGISTER7); //eflag 2 
  //pop(T_TMP_REGISTER8); //结果

  d_not(T_TMP_REGISTER6);
  pop(T_INVALID);
  w_push_imm_sx(0xf7ea);
  d_not_and();
  pop(T_INVALID);
  pop(T_TMP_REGISTER6);
  
  d_not(T_TMP_REGISTER7);
  pop(T_INVALID);
  w_push_imm_sx(0x815);
  d_not_and();
  pop(T_INVALID);
  pop(T_TMP_REGISTER7);
  d_add(T_TMP_REGISTER6,T_TMP_REGISTER7);
  pop(T_INVALID);
}
Example #2
0
void SeniorVMHandle::d_not(long _register,bool is_data) //如果第二个参数为true 那第一个参数就是 要Not的立即数
{
  if (is_data)
  {
    d_push_imm(_register);
    d_copy_stack();
    db( GET_HANDLE(d_nand) );
    return;
  }
  if (_register == 0)
  {
    db(HANDLE.d_nand.handle);
    return;
  }
/*
  char n = rand()%101;
  if (n <= 10)
  {
    d_not(_register); //a = nand(_r,_r);
    pop(T_INVALID);
    d_not(_register); //b = nand(_r,_r);
    pop(T_INVALID);
    db(HANDLE.d_nand.handle); //nand(a,b)
    pop(T_INVALID);
    d_not(_register); //a = nand(_r,_r);
    pop(T_INVALID);
    d_not(_register); //b = nand(_r,_r);
    pop(T_INVALID);
    db(HANDLE.d_nand.handle); //nand(a,b)
    pop(T_INVALID);
    db(HANDLE.d_nand.handle);
    return;
    }*/
  push(_register,false);
  db(HANDLE.push_stack_top_base.handle);
  db(HANDLE.d_read_mem.handle);
  //#ifndef PROTECT_X64
  //db(HANDLE.push_stack_top_base.handle);
  //db(HANDLE.d_read_mem.handle);
  //pop(_register);
  //#endif
  db(HANDLE.d_nand.handle);
}