void GetInfo_throws_if_invalid_value(MemorySize memorySize) { Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetInfo()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetSize()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetElementSize()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetElementType()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.IsSigned()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.IsPacked()); Assert.Throws <ArgumentOutOfRangeException>(() => memorySize.GetElementCount()); memorySize.IsBroadcast(); // Does not throw }
void VerifyMemorySizeProperties(MemorySize memorySize, int size, int elementSize, MemorySize elementType, int elementCount, MemorySizeFlags flags) { var info = memorySize.GetInfo(); Assert.Equal(memorySize, info.MemorySize); Assert.Equal(size, info.Size); Assert.Equal(elementSize, info.ElementSize); Assert.Equal(elementType, info.ElementType); Assert.Equal((flags & MemorySizeFlags.Signed) != 0, info.IsSigned); Assert.Equal((flags & MemorySizeFlags.Broadcast) != 0, info.IsBroadcast); Assert.Equal((flags & MemorySizeFlags.Packed) != 0, info.IsPacked); Assert.Equal(elementCount, info.ElementCount); Assert.Equal(size, memorySize.GetSize()); Assert.Equal(elementSize, memorySize.GetElementSize()); Assert.Equal(elementType, memorySize.GetElementType()); Assert.Equal((flags & MemorySizeFlags.Signed) != 0, memorySize.IsSigned()); Assert.Equal((flags & MemorySizeFlags.Packed) != 0, memorySize.IsPacked()); Assert.Equal((flags & MemorySizeFlags.Broadcast) != 0, memorySize.IsBroadcast()); Assert.Equal(elementCount, memorySize.GetElementCount()); }
void WriteMemorySize(MemorySize memorySize) { switch (opCode.Code) { case Code.Fldcw_m16: case Code.Fnstcw_m16: case Code.Fstcw_m16: case Code.Fnstsw_m16: case Code.Fstsw_m16: sb.Append("2byte"); return; } switch (memorySize) { case MemorySize.Bound16_WordWord: sb.Append("16&16"); break; case MemorySize.Bound32_DwordDword: sb.Append("32&32"); break; case MemorySize.FpuEnv14: sb.Append("14byte"); break; case MemorySize.FpuEnv28: sb.Append("28byte"); break; case MemorySize.FpuState94: sb.Append("94byte"); break; case MemorySize.FpuState108: sb.Append("108byte"); break; case MemorySize.Fxsave_512Byte: case MemorySize.Fxsave64_512Byte: sb.Append("512byte"); break; case MemorySize.Xsave: case MemorySize.Xsave64: // 'm' has already been appended sb.Append("em"); break; case MemorySize.SegPtr16: sb.Append("16:16"); break; case MemorySize.SegPtr32: sb.Append("16:32"); break; case MemorySize.SegPtr64: sb.Append("16:64"); break; case MemorySize.Fword5: if (!IsSgdtOrSidt()) { sb.Append("16&24"); } break; case MemorySize.Fword6: if (!IsSgdtOrSidt()) { sb.Append("16&32"); } break; case MemorySize.Fword10: if (!IsSgdtOrSidt()) { sb.Append("16&64"); } break; default: int memSize = memorySize.GetSize(); if (memSize != 0) { sb.Append(memSize * 8); } break; } if (IsFpuInstruction(opCode.Code)) { switch (memorySize) { case MemorySize.Int16: case MemorySize.Int32: case MemorySize.Int64: sb.Append("int"); break; case MemorySize.Float32: case MemorySize.Float64: case MemorySize.Float80: sb.Append("fp"); break; case MemorySize.Bcd: sb.Append("bcd"); break; } } }