示例#1
0
文件: Memory.cs 项目: m7nu3l/TinyBCT
        public override StatementList AllocStaticVariable(IFieldReference field)
        {
            StaticField    p  = new StaticField(new StaticFieldAccess(field));
            BoogieVariable bv = BoogieVariable.From(p);

            return(dispatcher.AllocAddr(bv));
        }
示例#2
0
文件: Memory.cs 项目: m7nu3l/TinyBCT
 public override StatementList WriteAddr(Addressable addr, Expression expr)
 {
     if (addr is InstanceField instanceField)
     {
         var instanceName = instanceField.Instance;
         var fieldName    = FieldTranslator.GetFieldName(instanceField.Field);
         if (Settings.SplitFieldsEnabled())
         {
             return(SplitFieldUpdate.ForKeyValue(instanceField, expr));
         }
         else
         {
             return(HeapUpdate.ForKeyValue(instanceField, expr));
         }
     }
     else if (addr is StaticField staticField)
     {
         var boogieVar = BoogieVariable.From(staticField);
         return(bg.VariableAssignment(boogieVar, expr));
     }
     else if (addr is DotNetVariable v)
     {
         return(BoogieStatement.VariableAssignment(BoogieVariable.FromDotNetVariable(v.Var), expr));
     }
     else
     {
         throw new NotImplementedException();
     }
 }
示例#3
0
文件: Memory.cs 项目: m7nu3l/TinyBCT
        public override Addressable AddressOf(StaticFieldAccess staticFieldAccess)
        {
            var address = new AddressExpression(staticFieldAccess.Field.Type, BoogieVariable.From(new StaticField(staticFieldAccess)));

            return(address);
        }