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); }
void SeniorVMHandle::w_sub(long _register1,long _register2) { w_not(_register1); //sub eax,ebx = add((not eax),ebx) pop(T_INVALID); pop(T_TMP_R16_8); b_add(T_TMP_R16_8,_register2); // pop(T_INVALID); pop(T_TMP_REGISTER6); //eflag 1 w_copy_stack(); w_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); }
void SeniorVMHandle::d_or(long _register1,long _register2) { d_not_and(_register1,_register2); pop(T_INVALID); d_not_and(_register1,_register2); pop(T_INVALID); db(HANDLE.d_nand.handle); }
void SeniorVMHandle::d_xor(long _register1,long _register2,bool is_data) { d_not_and(_register1,_register2,is_data); pop(T_INVALID); d_and(_register1,_register2,is_data); pop(T_INVALID); db(HANDLE.d_nand.handle); }