Exemplo n.º 1
0
 public static BitsConst Multiply(BitsConst left, int right) => left * Convert(right);
Exemplo n.º 2
0
 public BitsArrayValue(BitsConst data) { _data = data; }
Exemplo n.º 3
0
 public BitsConst Slash(BitsConst right, Size size) => Divide(right, size);
Exemplo n.º 4
0
 public BitsStackData(BitsConst data, IOutStream outStream)
     : base(outStream)
 {
     _data = data;
     Tracer.Assert(!_data.Size.IsZero);
 }
Exemplo n.º 5
0
 static BitsConst Paste(BitsConst bitsConst, NonListStackData data)
     => bitsConst.Concat(data.GetBitsConst());
Exemplo n.º 6
0
 public static BitsConst Divide(BitsConst left, int right) => left / Convert(right);
Exemplo n.º 7
0
 internal BitsConst BitArrayBinaryOp(string operation, Size size, BitsConst right)
 {
     var methodInfo = typeof(BitsConst).GetMethod(operation);
     if(methodInfo == null)
         throw new MissingMethodException(operation);
     return (BitsConst) methodInfo.Invoke(this, new object[] {right, size});
 }
Exemplo n.º 8
0
 public BitsConst LessEqual(BitsConst right, Size size)
     => ToBitsConst(AsInteger <= right.AsInteger, size);
Exemplo n.º 9
0
 public BitsConst LessGreater(BitsConst right, Size size)
     => ToBitsConst(AsInteger != right.AsInteger, size);
Exemplo n.º 10
0
 public BitsConst Minus(BitsConst right, Size size) => Plus(right * -1, size);
Exemplo n.º 11
0
 public BitsConst GreaterEqual(BitsConst right, Size size)
     => ToBitsConst(AsInteger >= right.AsInteger, size);
Exemplo n.º 12
0
 public BitsConst Plus(BitsConst right, Size size)
 {
     var xResult = new BitsConst(this, size);
     var yResult = new BitsConst(right, size);
     xResult.AddAndKeepSize(yResult);
     return xResult;
 }
Exemplo n.º 13
0
 public BitsConst BytePlus(BitsConst left, int bytes) => Plus(left, SegmentBits * bytes);
Exemplo n.º 14
0
 public BitsConst Divide(BitsConst right, Size size)
 {
     if(!(Marshal.SizeOf(typeof(long)) * 8 >= size.ToInt()))
         Tracer.AssertionFailed
             (
                 @"sizeof(Int64)*8 >= size.ToInt()",
                 () => "right=" + right + ";size=" + size.Dump());
     return Convert(ToInt64() / right.ToInt64()).Resize(size);
 }
Exemplo n.º 15
0
 BitsConst(BitsConst value, Size size)
     : this(size)
 {
     MoveData(_data, Size, value._data, value.Size);
 }
Exemplo n.º 16
0
 public BitsConst Concat(BitsConst other)
 {
     Size.AssertAlignedSize(SegmentAlignBits);
     var result = new BitsConst(Size + other.Size);
     DataHandler.MoveBytes(DataSize(Size), result._data, 0, _data, 0);
     DataHandler.MoveBytes
         (DataSize(other.Size), result._data, DataSize(Size), other._data, 0);
     return result;
 }
Exemplo n.º 17
0
 public static BitsConst Divide(BitsConst left, BitsConst right)
     => left.Divide(right, DivideSize(left.Size, right.Size));
Exemplo n.º 18
0
        public void PrintNumber(BitsConst radix, IOutStream outStream)
        {
            var r = radix.ToInt64();
            if(radix.Size.IsZero)
                r = 10;
            var left = ToString((int) r);

            outStream.AddData(left);
        }
Exemplo n.º 19
0
 void AddAndKeepSize(BitsConst left)
 {
     short carry = 0;
     for(var i = 0; i < _data.Length; i++)
     {
         carry += _data[i];
         carry += left._data[i];
         _data[i] = (byte) carry;
         carry /= (short) SegmentValues;
     }
     return;
 }
Exemplo n.º 20
0
 public static BitsConst Add(BitsConst left, BitsConst right)
     => left.Plus(right, PlusSize(left.Size, right.Size));
Exemplo n.º 21
0
 void IVisitor.BitsArray(Size size, BitsConst data)
 {
     if(size.IsZero)
         return;
     Push(new BitsStackData(data.Resize(size), _context.OutStream));
 }
Exemplo n.º 22
0
 public static BitsConst Subtract(BitsConst left, BitsConst right)
     => left.Plus(right * -1, PlusSize(left.Size, right.Size));
Exemplo n.º 23
0
 void IVisitor.BitsArray(Size size, BitsConst data)
     => AddCode("data.SizedPush({0}{1})", size.ByteCount, data.ByteSequence());
Exemplo n.º 24
0
 public static BitsConst Subtract(int left, BitsConst right) => Convert(left) - right;
Exemplo n.º 25
0
 void IVisitor.BitsArray(Size size, BitsConst data)
 {
     var startAddress = (_startAddress - size).ToInt();
     var element = FormalValueAccess.BitsArray(data);
     SetFormalValues(element, startAddress, size);
 }
Exemplo n.º 26
0
 public static BitsConst Multiply(BitsConst left, BitsConst right)
     => left.Multiply(right, MultiplySize(left.Size, right.Size));
Exemplo n.º 27
0
 public static IFormalValue BitsArray(BitsConst data) => new BitsArrayValue(data);
Exemplo n.º 28
0
 public BitsConst Star(BitsConst right, Size size) => Multiply(right, size);