void SeniorVMHandle::r_get_mem( long _register_index, long _register_base, long _scale, long _lval) { //_lval += 0x20; char sn = 0; for (int i = 0; i < 32; i++) { if (_scale == 1<<i) { sn = i; break; } } if (_register_index || _register_base || _scale || _lval) { //d_add(_register_index,_register_base); d_shl(_register_base,sn); pop(T_INVALID); pop(T_TMP_REGISTER5); d_add(_register_index,T_TMP_REGISTER5); pop(T_INVALID); pop(T_TMP_REGISTER5); d_push_imm(_lval); pop(T_TMP_REGISTER4); d_add(T_TMP_REGISTER5,T_TMP_REGISTER4); pop(T_INVALID); } else if (_register_index || _register_base || _lval) { } else if (_register_index || _scale || _lval) { } else if (_register_index || _register_base) { d_add(_register_index,_register_base); pop(T_INVALID); } else if (_register_base || _lval) { d_push_imm(_lval); pop(T_TMP_REGISTER4); d_add(_register_base,T_TMP_REGISTER4); pop(T_INVALID); } else if (_register_index || _lval) { d_push_imm(_lval); pop(T_TMP_REGISTER4); d_add(_register_index,T_TMP_REGISTER4); pop(T_INVALID); } else if (_register_index) { push(_register_index); } else if (_register_base) { } }
void SeniorVMHandle::r_get_mem( long _register_base, long _register_index, long _scale, long _lval) { if (_register_base == T_NSP) { db( GET_HANDLE( push_esp ) ); pop( T_ESP ); } d_push_imm( _lval ); pop( T_TMP_REGISTER4 ); if ( _register_index ) { char sn = 0; for (int i = 0; i < 32; i++) { if (_scale == 1<<i) { sn = i; break; } } d_shl( _register_index,sn ); pop( T_INVALID ); pop( T_TMP_REGISTER5 ); d_add(T_TMP_REGISTER4,T_TMP_REGISTER5 ); pop( T_INVALID ); pop( T_TMP_REGISTER4 ); } if (_register_base) { d_add( _register_base,T_TMP_REGISTER4 ); pop( T_INVALID ); } }