Example #1
0
 private void SwitchSegment(AssembledSegment unknownSegment)
 {
     currentSegment = unknownSegment;
     emitter = unknownSegment.Emitter;
     modRm = new ModRmBuilder(defaultWordSize, emitter);
 }
Example #2
0
 public void ModRm16Memop()
 {
     MemoryOperand m;
     PrimitiveType w = PrimitiveType.Word16;
     ModRmBuilder mrm = new ModRmBuilder(w, null);
     m = new MemoryOperand(w, Registers.bx, Registers.si, 1, Constant.Invalid);
     Assert.AreEqual(0, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.bx, Registers.di, 1, Constant.Invalid);
     Assert.AreEqual(1, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.bp, Registers.si, 1, Constant.Invalid);
     Assert.AreEqual(2, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.bp, Registers.di, 1, Constant.Invalid);
     Assert.AreEqual(3, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.si, Constant.Invalid);
     Assert.AreEqual(4, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.di, Constant.Invalid);
     Assert.AreEqual(5, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.bp, Constant.Invalid);
     Assert.AreEqual(0x46, mrm.Get16AddressingModeMask(m));
     m = new MemoryOperand(w, Registers.bx, Constant.Invalid);
     Assert.AreEqual(7, mrm.Get16AddressingModeMask(m));
 }
Example #3
0
 internal void SetDefaultWordWidth(PrimitiveType width)
 {
     SegmentDataWidth = width;
     SegmentAddressWidth = width;
     modRm = new ModRmBuilder(width, emitter);
     modRm.Error += modRm_Error;
 }