public MipsProgram VisitStringConstant(ASTCILStringConstantNode StringConstant)
        {
            var result      = new MipsProgram();
            var stringValue = Regex.Unescape(StringConstant.Value);

            if (!StringConstantGenerated.TryGetValue(StringConstant.Value, out var labelStringConstant))
            {
                result.SectionData.Append(MipsGenerationHelper.NewScript()
                                          .AddData(StringConstant.ObjectLabel,
                                                   new[]
                {
                    MipsGenerationHelper.AddIntData(
                        labelGenerator.GenerateLabelTypeInfo(CompilationUnit.TypeEnvironment.String.Name)),
                    MipsGenerationHelper.AddIntData(StringConstant.ValueLabel),
                    MipsGenerationHelper.AddIntData(stringValue.Length)
                })
                                          .Comment(StringConstant.Value)
                                          .AddData(StringConstant.ValueLabel, new[]
                {
                    MipsGenerationHelper.AddByteData(Regex.Unescape(StringConstant.Value).Select(x => (int)x))
                }));
                StringConstantGenerated.Add(StringConstant.Value, StringConstant.ObjectLabel);
                labelStringConstant = StringConstant.ObjectLabel;
            }

            result.SectionCode.Append(MipsGenerationHelper.NewScript()
                                      .LoadFromAddress(MipsRegisterSet.a0, labelStringConstant)
                                      .Add(MipsRegisterSet.a0, 4));
            return(result);
        }