亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? engine.cpp.svn-base

?? 這是一段游戲修改工具的源代碼.ring3功能由dephi開發,驅動是C開發.希望對大家有幫助
?? SVN-BASE
?? 第 1 頁 / 共 4 頁
字號:
    get_stack_frame(i, xs);    
    Parser::state.push_context(xs.m_fb->context);
    resume_state.m_baseSP = xs.m_baseSP;
	if (verbose) dump_fun_frame(i,xs);
}

static int
 s_stepping = 0,
 s_current_exec_line = -1,
 s_old_exec_line = -1;

static Breakpoint* s_brk = NULL;

const int STEP_WAIT=1,STEP_MAIN=2,STEPPING=3,STEPPING_OVER=4;
static FBlock* s_main_fb;
static FBlock* s_initial_fb;
static int s_initial_stack_depth;

// *add 1.2.4 Switches profiling mode; returns IC.
unsigned long instr_count = 0;
const int STEP_PROFILE = 5;

unsigned long* set_instruction_counter(bool do_profiling)
{
   s_stepping = do_profiling ? STEP_PROFILE : 0;
   return &instr_count;  
}


#ifdef _DEBUG
int sh_offs() {
   return (int)mSP-(int)_stack_;
}

CEXPORT char *sh_fun() {
  static string tmp;
  try {
    tmp = fname_from_fblock(fb);  // *change 1.2.4
    return tmp.c_str();
  }
  catch(...) {
    return "<dud>";
  }
}

char *sh_var(char *sym)
{
    static char buff[40];
    PEntry pe = Parser::symbol_lookup(sym);
    if (pe) {
        unsigned int res = *(unsigned int *)pe->global_ptr();
        sprintf(buff,"%x %d",res,res);
        return buff;
    }
    else return "not found";
}
#endif

int current_ip()
{
  return ((int)ppcode - (int)fb->pstart)/4;
}

bool start_exec()
//---------------------------
{
  static int rmode,rdata,val,nargs,tmp;
  static Opcodes opcode;
  static double fval, gval;
  static void *data;
  static int buff[TMP_BUFF_SIZE];
  NFBlock *pfb; // *fix 1.2.4 Must _not_ be static!

  while (ppcode != end_of_code) {
top:
    opcode = (Opcodes)ppcode->opcode;
    rmode  = ppcode->rmode;
    if (rmode) {
      rdata = ppcode->data;
      if (rmode == DIRECT) data = mDataSeg + rdata; else
      if (rmode == SREL)   data = baseSP + rdata;    
      else data = mOP + rdata;
    }

    switch(opcode) {
        //...pushing effective address.
    case PEA:  push((int)data);         break;
    case PERA: push(rdata);             break;

    //.....pushing onto the exec stack...........................
    case PUSHC: push(REF(char,data));   break;
    case PUSHW: push(REF(short,data));  break;
    case PUSHI: push(REF(int,data));    break;
    case PUSHF: push2(REF(float,data));     break; // push as qword 
    case PUSHD: push2(REF(double,data));    break; 
    case PUSHS: pushf(REF(float,data));     break; // push as dword
    
    //....popping off the exec stack into a variable.............
    case POPC:  REF(char,data) = pop(); break;
    case POPW:  REF(short,data) = pop();    break;  
    case POPI:  REF(int,data) = pop();  break;
    case POPF:  REF(float,data) = pop2();   break;
    case POPD:  REF(double,data) = pop2();  break;
    //....stack-relative pushes/pops
    case PUSHSC: push(REF(char,popp()));    break;
    case PUSHSW: push(REF(short,popp()));   break;
    case PUSHSI: push(REF(int,popp())); break;
    case PUSHSF: push2(REF(float,popp()));  break;
    case PUSHSD: push2(REF(double,popp())); break;
    case POPSC:  val=popp(); REF(char,val) = pop(); break;
    case POPSW:  val=popp(); REF(short,val) = pop(); break;
    case POPSI:  val=popp(); REF(int,val) = pop(); break;
    case POPSD:  val=popp();REF(double,val) = pop2(); break;

    case DROP:   drop();            break;
    case DROP2:  drop2();           break;  // *add 1.2.3b missing opcode!
    case DUP:    push(tos());       break;
    case DUP2:   push2(tos2());     break;  // *fix 1.2.4 was taken out by mistake in 1.2.3b!
    case SWAP: //....swap top two dwords on stack.... 
          val = pop();
          tmp = tos();
          tos() = val;
          push(tmp);
          break;
    case SWAPD:  // swap top qword with next dword...
	      fval = pop2();
		  val = pop();
		  push2(fval);
		  push(val);
	      break;
    //.....integer arithmetric operations.......................
    case NEG:    tos() = -tos();        break;
    case ADD:    val=pop();  tos() += val;  break;
    case SUB:    val=pop();  tos() -= val;  break;
    case MUL:    val=pop();  tos() *= val;  break;
    case DIV:    val=pop();  tos() /= val;  break;
    case IDIV:   val=pop();  (unsigned&)tos() /= val;  break;
    case AND:    val=pop();  tos() &= val;  break;  // binary and
    case OR:     val=pop();  tos() |= val;  break;  // binary or
    case XOR:    val=pop();  tos() ^= val;  break;
    case SHL:    val=pop();  tos() <<= val; break;  
    case SHR:    val=pop();  tos() >>= val; break;
    case NOT:    tos() = ! tos();           break;
    case BNOT:   tos() = ~ tos();           break;
    case EQ:     val=pop();  tos() = tos() == val;  break;
    case NEQ:     val=pop();  tos() = tos() != val; break;
    case MOD:    val=pop();  tos() = tos() % val;   break;
    case LESS:   val=pop();  tos() = tos() < val;   break;
    case GREAT:  val=pop();  tos() = tos() > val;   break;
    case LE:   val=pop();  tos() = tos() <= val;   break;
    case GE:  val=pop();  tos() = tos() >= val;   break;

    //....floating-point arithmetric
    case FNEG:   tos2() = -tos2();          break;
    case FADD: 
        fval=pop2();
        tos2() += fval;
        break;
    case FSUB:   fval=pop2(); tos2() -= fval;  break;       
    case FMUL:   fval=pop2(); tos2() *= fval;   break;      
    case FDIV:   fval=pop2(); tos2() /= fval;   break;
    case FEQ:    fval=pop2(); push(pop2() == fval); break;
    case FNEQ:    fval=pop2(); push(pop2() != fval);    break;
    case FLESS:  fval=pop2(); push(pop2() < fval);  break;
    case FGREAT: fval=pop2(); push(pop2() > fval);  break;   
    case FLE:  fval=pop2(); push(pop2() <= fval);   break;
    case FGE: fval=pop2(); push(pop2() >= fval);  break;     


    //...array operations
    case ADDCC:  val=pop();  push((int)data + sizeof(char)*val);    break;
    case ADDCW:  val=pop();  push((int)data + sizeof(short)*val);   break;
    case ADDCI:  val=pop();  push((int)data + sizeof(int)*val);     break;
    case ADDCD:  val=pop();  push((int)data + sizeof(double)*val);  break;
    case ADDPC:  val=pop();  push(REF(int,data) + sizeof(char)*val);    break;
    case ADDPW:  val=pop();  push(REF(int,data) + sizeof(short)*val);   break;
    case ADDPI:  val=pop();  push(REF(int,data) + sizeof(int)*val);     break;
    case ADDPD:  val=pop();  push(REF(int,data) + sizeof(double)*val);  break;
    // ADDSC is ADD!
    case ADDSW:  val=pop();  push(val + sizeof(short)*pop());           break;  
    case ADDSI:  val=pop();  push(val + sizeof(int)*pop());             break;
    case ADDSD:  val=pop();  push(val + sizeof(double)*pop());          break;
    case ADDSN:  val=pop();  push(val + pop()*pop());                   break;

    case COPY:   memcpy((void *)pop(),(void *)pop(),ppcode->data); break;

    //...jumps (all relative) and calls (pcode and native)........
    //...These set ppcode directly, and so we jump to the end of the loop....
    case CCALLX: // *add 1.2.0 Associate VMT with imported ptr
        PFBlock(data)->class_ptr->attach_VMT(mOP);
        goto call_the_function;
    case CCALL: //....patch the hidden VMT pointer......
        *VMT(mOP) = PFBlock(data)->class_ptr->get_VMT();
        // and fall through....
call_the_function:
    case CALL:  
        start_function(PFBlock(data));
        continue;
    case VCALL: //....lookup the proc in the VMT table....
        start_function(virtual_method_lookup(rdata));
        continue;
    case VCALLX: //....lookup proc in associated VMT table (for imports)
        start_function(virtual_method_imported_lookup(rdata));
        continue;
    case CALLN:  // native code interface
        pfb = (NFBlock *)data;
        nargs = pfb->nargs;
        if (nargs == -1) nargs = pop();
        callfn(pfb->pfn,mSP-1,nargs,mOP,pfb->flags,buff);
        mSP += nargs;
        if (pfb->flags & DC_QWORD) push2(*(double *)buff); else
        if (pfb->flags & DC_NOWORD) ;
        else push(*buff);
        break;
    case CCALLV: {// vector constructor/destructor call
        ConstructBlock *pcb = (ConstructBlock *)data;
        PPClass vtable = pcb->get_VMT();
		PClass pc = pcb->class_ptr();
        int num;
        if (pcb->dynamic()) { // i.e new[] has generated a ptr for us; 
           char *ptr = mOP - sizeof(void *);
           num = Builtin::alloc_size(ptr);
        } else num = pcb->num();
        char *old_mOP = mOP;
        for(int i = 0, sz = pcb->size(); i < num; i++) {
          if (vtable != NULL) { // patch VMT, if needed
                if (! pc->has_true_VMT()) pc->attach_VMT(vtable);
                else *VMT(mOP) = vtable;             
          }
          // push  ODS, if needed
          // *add 1.2.3 static objects get their own ODS
          // *change 1.2.9 static objects are handled at compile-time w/ the ODL 
          // (see LoadedModuleList in program.cpp)
		  if (pcb->load_ODS()) 
              mODS.push_object(pc, mOP);     
          if (Engine::execute(pcb->fblock())==CRASHED)
            throw Exception("Construction failed");
          mOP += sz;
        }
        mOP = old_mOP;
        if (pcb->dynamic()) push((int)mOP);  // leave obj on XS
        opop();                              // drop the OS
      }
      break;
  // *NOTE* The continue seems strange, but it is important to skip ppcode++!
    case CALLS:
        start_function(PFBlock(pop()));
        continue;
    case VCALLS:
        start_function(virtual_method_lookup((int)pop()));
        continue;
      JMP_case:
    case JMP:    ppcode = fb->pstart + ppcode->data; goto top;              break;
    case JZ:     if(!pop()) goto JMP_case; break;
    case JNZ:    if(pop())  goto JMP_case; break;
    case JZND:   if(!tos()) goto JMP_case; else drop(); break; 
    case JNZND:  if(tos())  goto JMP_case; else drop(); break;
    case JSWITCH: ppcode = fb->pstart + switch_jump((int *)data,pop()); goto top; 
    case RET:   
          mSP = baseSP;
          mSP += fb->nargs;
          end_function();
          break;    
    case RETI: //......returning dword..........
          val = pop();      // pop the return value
          mSP = baseSP;     // restore stack frame
          mSP += fb->nargs; // drop the args (STDCALL!)
          push(val);        // push return value
          end_function();
          break;
    case RETD: //.....returning qword............
          fval = pop2();
          mSP = baseSP;
          mSP += fb->nargs;
          push2(fval);
          end_function();
          break;
    case ADDSP: // *add 1.2.3b True cdecl calling convention implemented
		{
          int data = ppcode->data;
		  int tp = lo_byte(data);
		  int sz = hi_byte(data);
		  if (tp==1) val = pop();
		  else if (tp==2) fval = pop2();
		  mSP += sz;
          if (tp==1) push(val); 
		  else if (tp==2) push2(fval);
		}
		break;
    case UNWIND:
         {
         int* old_sp = mSP;  
         char *old_op = mOP;
         do_unwind((char *)data, mODS);
         if (old_sp != mSP || old_op != mOP) 
            cerr << "SP/OP changed!\n";
         #ifdef TRACK_ODS
         cout << "unwind " << data << ' ' << current_ip() << ' ' << sh_fun() <<endl;
         #endif
         }
         break;
    case DCAST: { // *add 0.9.5 dynamic cast
           Type t = *(Type *)data;
           Class *tc = t.as_class();  // hm...what about the (void *) possibility?
           void *ptr = (void *)pop();
           Class *oc = get_class_object(ptr);
           if (! oc->inherits_from(tc)) {
              if (t.is_pointer()) push(0);
              else {
                int ip = throw_exception(t_char_ptr,(char *)"bad cast"); // for now!!
                if (ip == -1) throw Exception("bad dynamic typecast");
                else { ppcode = fb->pstart + ip; continue; }
              }
           } else push((int)ptr);
         }
         break;
    // INC and DEC
    case INCC:   REF(char,data)++;  break;
    case INCW:   REF(short,data)++; break;
    case INCI:   REF(int,data)++;   break;
    case INCS:   tos()++;           break;
    case DECC:   REF(char,data)--;  break;
    case DECW:   REF(short,data)--; break;
    case DECI:   REF(int,data)--;   break;
    case DECS:   tos()--;           break;

   // INCP and DECP
    case INCPC:   REFP(char,data)++;    break;
    case INCPW:   REFP(short,data)++;   break;
    case INCPI:   REFP(int,data)++;     break;
    case INCPD:   REFP(double,data)++;  break;
    case DECPC:   REFP(char,data)--;    break;
    case DECPW:   REFP(short,data)--;   break;
    case DECPI:   REFP(int,data)--;     break;
    case DECPD:   REFP(double,data)--;  break;

   // INCS and DECS
    case INCSC:   REFS(char)++;     break;
    case INCSW:   REFS(short)++;        break;
    case INCSI:   REFS(int)++;      break;
    case DECSC:   REFS(char)--;     break;
    case DECSW:   REFS(short)--;        break;
    case DECSI:   REFS(int)--;      break;
  
    //...conversions...............................................
    case D2I:   push((int)pop2());          break;
    case I2D:   push2((double)pop());       break;  
    case F2D:   push2((double)popf());      break;
    case D2F:   pushf((float)pop2());       break;
    case I2F:   pushf((float)pop());        break;
    case F2I:   push((int)popf());          break;
    case I2B:   push(0xFF & pop());         break;   // *add 1.2.9 32-bit to 8-bit bool

    //...object-stack manipulation
    case LOS:
        //depth = ostack.depth();
        opush(data);
        break;
    case LOSS:
        opush((void *)pop());
        break;
    case DOS: 
        opop(); 
        break;  
    case TOSX:
        push((int)mOP);
        opop();
        break;
    case TOSD:
        mODS.push_object(*(PClass *)data, mOP);
        #ifdef TRACK_ODS
        cout << "TOSD " << (void *)mOP << ' ' << current_ip() << ' ' << sh_fun() << endl;
        #endif
        opop();
        break;
    case TPODS: // pushing temporary for functions returning object values
        {
         PClass pc = *(PClass *)data;
#ifdef DEBUG_ODS
          if (pc->has_VMT()) *VMT(mOP) = DEFER_MARKER;
#endif
          mODS.push_object(pc,mOP);
          push((int)mOP);
        #ifdef TRACK_ODS
        cout << "TPODS " << mOP << ' ' << sh_fun() << endl;
        #endif
          opop();
        }
        break;

    case PUSH_THIS:
        push((int)mOP);
        break;

    case STALC: // allocate object directly on stack (needed for MS object-passing)
    // *fix 1.2.0 The UC stack now grows downwards!
		mSP -= ppcode->data;
   	    opush(mSP);
		break;

    case THROW_EX:   {
        Type et = *(Type *)data;
        void *obj = (void *)pop();
        int ip = throw_exception(et,obj);
        if (ip == -1) { // couldn't catch the exception
        // *add 1.2.4 if the thrown type is derived from Exception,
        // then pass on the message! (Warning: this depends on Exception defined in <uc_except.h>
        // having precisely this layout, w/ a char pointer as the first field)
            if (match(Parser::mEException->type,et) != NO_MATCH) 
              throw Exception(*(char **)obj);
            else 
              throw Exception("uncaught exception");
        } // otherwise, can continue excuting at the given catch block address...
        else { ppcode = fb->pstart + ip; continue; }
       }

    case CHKVMT: // *NOTE64*
      push((int)(*(PClass *)(data))->check_object_pointer((char *)pop()));
      break;

    case VTABLE_PATCH:	   
       // *fix 1.2.8 in classes derived indirectly from imported classes,
	  // Class::update_vtable() was _not_ being called for the specific
      // class in question!
	   //  get_class_object(mOP)->update_vtable(mOP);
	   (*(PClass *)(data))->update_vtable(mOP);
      break;

    case POPIF:
    case PUSHIF: {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区四区不卡| 中文字幕一区二区三区在线观看| 精品国产伦理网| 欧美日韩二区三区| 色久综合一二码| 欧亚洲嫩模精品一区三区| 色视频欧美一区二区三区| 色婷婷综合久久| 国产女人18毛片水真多成人如厕| 欧美国产1区2区| 亚洲日穴在线视频| 亚洲成人777| 激情五月激情综合网| 国产不卡视频在线观看| 91免费版在线| 3d动漫精品啪啪| 久久精品亚洲精品国产欧美kt∨| 精品国产一区二区三区久久影院| 亚洲国产色一区| 韩国一区二区在线观看| 欧美午夜片在线看| 欧美一区二区成人6969| 久久久蜜桃精品| 亚洲手机成人高清视频| 风流少妇一区二区| 久久蜜桃香蕉精品一区二区三区| 五月天中文字幕一区二区| 久久精品国产在热久久| av一二三不卡影片| 欧美精品久久99久久在免费线| 欧美电影精品一区二区| 亚洲人亚洲人成电影网站色| 亚洲黄色小说网站| 韩国av一区二区三区四区| 91精品国产综合久久久久| 亚洲丶国产丶欧美一区二区三区| 91丨九色porny丨蝌蚪| 国产精品天美传媒| 日本aⅴ免费视频一区二区三区| 成人性生交大片免费看在线播放| 欧美美女喷水视频| 日韩精品电影一区亚洲| 99久久精品免费看| 久久精品亚洲麻豆av一区二区| 国产一二精品视频| 91精品午夜视频| 免费美女久久99| 国产亚洲精品久| 成人污污视频在线观看| 亚洲人123区| 欧美在线免费观看亚洲| 秋霞电影网一区二区| 日韩欧美一级片| 成人小视频免费在线观看| 亚洲欧洲一区二区在线播放| 91成人免费在线视频| 亚洲成a人v欧美综合天堂| 日韩欧美一区二区三区在线| 韩国av一区二区三区四区| 国产精品欧美一区喷水| 97久久超碰国产精品电影| 亚洲一级在线观看| 色婷婷综合久久久中文一区二区| 亚洲一二三区不卡| 精品女同一区二区| 久久国产乱子精品免费女| 中文字幕国产一区| 777午夜精品视频在线播放| 免费成人结看片| 亚洲色欲色欲www| 欧美一级一区二区| 成人免费福利片| 日韩va欧美va亚洲va久久| 56国语精品自产拍在线观看| 黑人巨大精品欧美一区| 亚洲免费观看高清在线观看| 精品国产乱码久久久久久牛牛| av不卡一区二区三区| 九九在线精品视频| 久久精品一区四区| 欧美精品久久一区| 懂色av中文一区二区三区| 亚洲va国产天堂va久久en| 亚洲国产精品成人综合色在线婷婷| 99re这里只有精品6| 久久电影网站中文字幕| 一区二区三区中文字幕电影| 欧美午夜影院一区| 成人一区二区三区视频在线观看 | 一本到不卡精品视频在线观看 | 成人午夜激情片| 五月激情综合色| 国产精品盗摄一区二区三区| 99精品久久只有精品| 激情丁香综合五月| 青青草91视频| 亚洲高清免费一级二级三级| 欧美国产激情二区三区| 精品美女被调教视频大全网站| 在线观看91视频| 99久久久国产精品| 成人免费视频免费观看| 日韩成人精品视频| 亚洲精品成人在线| 欧美激情在线看| 精品福利一区二区三区| 日韩欧美国产wwwww| 91超碰这里只有精品国产| 欧美三级在线看| 国产精品一区二区无线| 亚洲精品中文字幕在线观看| 久久精品一区二区三区不卡牛牛| 日韩精品最新网址| 日韩欧美区一区二| 欧美一区二区三区免费观看视频| 欧美日韩在线精品一区二区三区激情| 91视频91自| 在线看日本不卡| 欧亚一区二区三区| 欧美日韩国产三级| 99国产精品久久久久| 成人av在线资源网站| 美女任你摸久久| 亚洲精品高清在线| 亚洲综合色网站| 亚洲成人综合网站| 日日夜夜一区二区| 蜜臀av性久久久久蜜臀av麻豆| 免费在线观看一区| 国产一区二三区好的| 国产在线精品一区二区不卡了 | 一区二区三区精品在线观看| 亚洲乱码中文字幕综合| 亚洲制服丝袜av| 日本成人在线网站| 国产成人免费视频网站| 婷婷综合另类小说色区| 秋霞午夜av一区二区三区| 国产乱码精品一品二品| 成人18视频日本| 欧美日韩在线一区二区| 亚洲精品在线三区| 亚洲色图制服诱惑| 青青草成人在线观看| 成人一区二区三区| 欧美久久久影院| 久久久99精品免费观看不卡| 成人欧美一区二区三区| 亚洲一区二区高清| 国产一区二区三区在线观看精品| 99热这里都是精品| 精品少妇一区二区三区免费观看 | 顶级嫩模精品视频在线看| 国产美女久久久久| 蜜臀91精品一区二区三区| 成人在线一区二区三区| 国产成人在线网站| 蜜臀91精品一区二区三区| 成人精品国产一区二区4080| 亚洲视频一区在线| 麻豆91精品91久久久的内涵| 日本麻豆一区二区三区视频| 午夜精品久久久久影视| 欧美伦理影视网| 精品国精品国产尤物美女| 亚洲国产精品黑人久久久| 国产亚洲一本大道中文在线| 日韩中文字幕av电影| 免费av网站大全久久| 亚洲国产裸拍裸体视频在线观看乱了 | 一本色道亚洲精品aⅴ| 色偷偷久久人人79超碰人人澡| 一本一本久久a久久精品综合麻豆| 色吊一区二区三区| 中文字幕一区二区三区不卡| 亚洲欧洲国产日韩| 一区二区欧美精品| 亚洲尤物视频在线| 午夜精品一区二区三区电影天堂| 日韩二区三区在线观看| 精久久久久久久久久久| 欧美另类videos死尸| 日韩一区二区三区电影| 国产日产欧美一区二区视频| 精品久久久久久久人人人人传媒 | 久久66热偷产精品| 成年人国产精品| 一本色道久久综合亚洲aⅴ蜜桃| 久久精品日产第一区二区三区高清版| 亚洲欧洲日产国产综合网| 日本欧美韩国一区三区| 91视频在线观看免费| 色天天综合久久久久综合片| 精品国产一区二区三区久久久蜜月| 夜夜嗨av一区二区三区中文字幕 | 成人sese在线| 欧美主播一区二区三区| 91精品国产综合久久婷婷香蕉| 午夜精品久久久久久久99水蜜桃 | 日本午夜精品视频在线观看|