Exemplo n.º 1
0
            public OperandElement Clone(Block parentBlock, Macrocall writtenMacro)
            {
                var res = new OperandElement()
                {
                    AssemblePosition = this.AssemblePosition,
                    Immediate        = this.Immediate.Clone(parentBlock),
                    WrittenMacrocall = writtenMacro
                };

                return(res);
            }
Exemplo n.º 2
0
        private StringBuilder constructFilterString()
        {
            Stack <OperandElement> operandStack = new Stack <OperandElement>();
            StringBuilder          builder      = new StringBuilder();

            foreach (var component in component_stack)
            {
                OperandElement currentOperand;
                if (component == "&" || component == "|")
                {
                    if (operandStack.Count == 0 || operandStack.Peek().Operand != component)
                    {
                        currentOperand = new OperandElement {
                            Operand = component, Count = 0
                        };
                        operandStack.Push(currentOperand);
                    }
                    else
                    {
                        currentOperand = operandStack.Peek();
                        currentOperand.Count++;
                    }

                    if (currentOperand.Count == 0)
                    {
                        builder.Append("(" + currentOperand.Operand);
                    }
                }
                else if (component == "-&" || component == "-|")
                {
                    currentOperand = operandStack.Peek();

                    if (currentOperand.Count > 0)
                    {
                        currentOperand.Count--;
                    }
                    else
                    {
                        builder.Append(")");
                        operandStack.Pop();
                    }
                }
                else
                {
                    //string filter = "(" + component + ")";
                    string filter = component;
                    builder.Append(filter);
                }
            }

            return(builder);
        }
Exemplo n.º 3
0
            public OperandElement Clone(Block parentBlock, Instruction writtenInstr)
            {
                var res = new OperandElement()
                {
                    AssemblePosition   = this.AssemblePosition,
                    Immediate          = this.Immediate.Clone(parentBlock),
                    WrittenInstruction = writtenInstr
                };

                res.Labels = new List <Label>();
                for (int lblIdx = 0; lblIdx < this.Labels.Count; lblIdx++)
                {
                    Label clonedLbl = this.Labels[lblIdx].Clone(parentBlock);
                    res.Labels.Add(clonedLbl);
                    clonedLbl.SetLabelPlacedInfo(res.PlacedInfo);
                    if (res.PlacedInfo == null)
                    {
                    }
                }

                return(res);
            }