void SeniorVMHandle::b_sub(long _register1,long _register2) { b_not(_register1); pop(T_INVALID); pop(T_TMP_R8_8L); b_add(T_TMP_R8_8L,_register2); // pop(T_INVALID); pop(T_TMP_REGISTER6); //eflag 1 b_copy_stack(); b_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::b_not(long _register,bool is_data) { if (is_data) { b_push_imm( _register ); b_copy_stack(); db( GET_HANDLE( b_nand ) ); } if (_register == 0) { db(HANDLE.b_nand.handle); return; } push(_register); db(HANDLE.push_stack_top_base.handle); db(HANDLE.b_read_mem.handle); db(HANDLE.b_nand.handle); }