예제 #1
0
        // TODO: Consider making this a separate phase
        private void GenerateStringMap(IList <BasicBlock> blocks)
        {
            // Process all stack entrys and extract string definitions to populate the string map
            foreach (var block in blocks)
            {
                var currentNode = block.FirstNode;
                while (currentNode != null)
                {
                    if (currentNode is StringConstantEntry)
                    {
                        var stringConstantEntry = currentNode.As <StringConstantEntry>();

                        var label = LabelGenerator.GetLabel(LabelType.String);
                        _labelsToStringData[label] = stringConstantEntry.Value;

                        stringConstantEntry.Label = label;
                    }
                    currentNode = currentNode.Next;
                }
            }
        }
예제 #2
0
 public BasicBlock(int offset)
 {
     StartOffset = offset;
     Label       = LabelGenerator.GetLabel(LabelType.BasicBlock);
 }