Esempio n. 1
0
auto V30MZ::opExchangeMemReg(Size size) {
  wait(2);
  modRM();
  auto mem = getMem(size);
  auto reg = getReg(size);
  setMem(size, reg);
  setReg(size, mem);
}
Esempio n. 2
0
//62  bound reg,mem,mem
auto V30MZ::opBound() {
  wait(12);
  modRM();
  auto lo = getMem(Word, 0);
  auto hi = getMem(Word, 2);
  auto reg = getReg(Word);
  if(reg < lo || reg > hi) interrupt(5);
}
Esempio n. 3
0
auto V30MZ::opLoadSegmentMem(uint16_t& segment) {
  wait(5);
  modRM();
  setReg(Word, getMem(Word));
  segment = getMem(Word, 2);
}
Esempio n. 4
0
auto V30MZ::opLoadEffectiveAddressRegMem() {
  modRM();
  setReg(Word, modrm.address);
}
Esempio n. 5
0
auto V30MZ::opMoveRegMem(Size size) {
  modRM();
  setReg(size, getMem(size));
}
Esempio n. 6
0
auto V30MZ::opMoveMemImm(Size size) {
  modRM();
  setMem(size, fetch(size));
}
Esempio n. 7
0
//8e  mov seg,memw
auto V30MZ::opMoveSegMem() {
  wait(1);
  modRM();
  setSeg(getMem(Word));
  if((modrm.reg & 3) == 3) state.poll = false;
}
Esempio n. 8
0
//8c  mov memw,seg
auto V30MZ::opMoveMemSeg() {
  modRM();
  setMem(Word, getSeg());
  state.poll = false;
}