public ExpressionTransactionSet(Expression expression, ExpressionWriteTransaction write) { this.Transactions = new List <ExpressionTransaction>(); if (expression.Layer > 0) { //allow 1 register for each subexpression RegisterMemory = expression.Subexpressions.Count; expression.Subexpressions.Sort(); for (var index = 0; index < expression.Subexpressions.Count; index++) { var s = expression.Subexpressions[index]; s.RegisterIndex = index + 1; var tmp = new ExpressionTransaction(s.Value, new ExpressionWriteTransaction(ExprOutLoc.RegisterBank, s.RegisterIndex)); Transactions.Add(tmp); } } else { RegisterMemory = 1; } //write the final output of the expression tot he first register expression.RegisterIndex = 0; Transactions.Add(new ExpressionTransaction(expression.Value, write)); }
public ExpressionTransactionSet GenerateExpressionTransactions(ExpressionWriteTransaction write) { if (!Simple) { throw new Exception("Only simple equations (+,*) allowed in this build."); } return(new ExpressionTransactionSet(this, write)); }
public ExpressionTransaction(AdditionString expression, ExpressionWriteTransaction transaction) { this.Transaction = transaction; this.Expression = new AddTransaction(expression); }