コード例 #1
0
                                // GNUSyntax returns the GNU assembler syntax for the instruction, as defined by GNU binutils.
                                // This form typically matches the syntax defined in the ARM Reference Manual.
                                public static @string GNUSyntax(Inst inst)
                                {
                                    bytes.Buffer buf = default;
                                    var          op  = inst.Op.String();

                                    op = saveDot.Replace(op);
                                    op = strings.Replace(op, ".", "", -1L);
                                    op = strings.Replace(op, "_dot_", ".", -1L);
                                    op = strings.ToLower(op);
                                    buf.WriteString(op);
                                    @string sep = " ";

                                    foreach (var(i, arg) in inst.Args)
                                    {
                                        if (arg == null)
                                        {
                                            break;
                                        }

                                        var text = gnuArg(_addr_inst, i, arg);
                                        if (text == "")
                                        {
                                            continue;
                                        }

                                        buf.WriteString(sep);
                                        sep = ", ";
                                        buf.WriteString(text);
                                    }
                                    return(buf.String());
                                }
コード例 #2
0
ファイル: memprof.cs プロジェクト: zjmit/go2cs
        public static void MemProf()
        {
            // Force heap sampling for determinism.
            runtime.MemProfileRate = 1L;

            for (long i = 0L; i < 10L; i++)
            {
                fmt.Fprintf(_addr_memProfBuf, "%*d\n", i, i);
            }

            memProfStr = memProfBuf.String();

            runtime.GC();

            var(f, err) = ioutil.TempFile("", "memprof");
            if (err != null)
            {
                fmt.Fprintln(os.Stderr, err);
                os.Exit(2L);
            }

            {
                var err__prev1 = err;

                var err = pprof.WriteHeapProfile(f);

                if (err != null)
                {
                    fmt.Fprintln(os.Stderr, err);
                    os.Exit(2L);
                }

                err = err__prev1;
            }


            var name = f.Name();

            {
                var err__prev1 = err;

                err = f.Close();

                if (err != null)
                {
                    fmt.Fprintln(os.Stderr, err);
                    os.Exit(2L);
                }

                err = err__prev1;
            }


            fmt.Println(name);
        }
コード例 #3
0
        /*
         * Helpers for building cmd/go and cmd/cgo.
         */

        // mkzdefaultcc writes zdefaultcc.go:
        //
        //    package main
        //    const defaultCC = <defaultcc>
        //    const defaultCXX = <defaultcxx>
        //    const defaultPkgConfig = <defaultpkgconfig>
        //
        // It is invoked to write cmd/go/internal/cfg/zdefaultcc.go
        // but we also write cmd/cgo/zdefaultcc.go
        private static void mkzdefaultcc(@string dir, @string file)
        {
            if (strings.Contains(file, filepath.FromSlash("go/internal/cfg")))
            {
                ref bytes.Buffer buf = ref heap(out ptr <bytes.Buffer> _addr_buf);
                fmt.Fprintf(_addr_buf, "// Code generated by go tool dist; DO NOT EDIT.\n");
                fmt.Fprintln(_addr_buf);
                fmt.Fprintf(_addr_buf, "package cfg\n");
                fmt.Fprintln(_addr_buf);
                fmt.Fprintf(_addr_buf, "const DefaultPkgConfig = `%s`\n", defaultpkgconfig);
                buf.WriteString(defaultCCFunc("DefaultCC", defaultcc));
                buf.WriteString(defaultCCFunc("DefaultCXX", defaultcxx));
                writefile(buf.String(), file, writeSkipSame);
                return;
            }
コード例 #4
0
 // Escape comment text for HTML. If nice is set,
 // also turn `` into &ldquo; and '' into &rdquo;.
 private static void commentEscape(io.Writer w, @string text, bool nice)
 {
     if (nice)
     {
         // In the first pass, we convert `` and '' into their unicode equivalents.
         // This prevents them from being escaped in HTMLEscape.
         text = convertQuotes(text);
         ref bytes.Buffer buf = ref heap(out ptr <bytes.Buffer> _addr_buf);
         template.HTMLEscape(_addr_buf, (slice <byte>)text);
         // Now we convert the unicode quotes to their HTML escaped entities to maintain old behavior.
         // We need to use a temp buffer to read the string back and do the conversion,
         // otherwise HTMLEscape will escape & to &amp;
         htmlQuoteReplacer.WriteString(w, buf.String());
         return;
     }
コード例 #5
0
ファイル: mode.cs プロジェクト: zjmit/go2cs
                        public static @string String(this BuilderMode m)
                        {
                            bytes.Buffer buf = default;
                            if (m & GlobalDebug != 0L)
                            {
                                buf.WriteByte('D');
                            }

                            if (m & PrintPackages != 0L)
                            {
                                buf.WriteByte('P');
                            }

                            if (m & PrintFunctions != 0L)
                            {
                                buf.WriteByte('F');
                            }

                            if (m & LogSource != 0L)
                            {
                                buf.WriteByte('S');
                            }

                            if (m & SanityCheckFunctions != 0L)
                            {
                                buf.WriteByte('C');
                            }

                            if (m & NaiveForm != 0L)
                            {
                                buf.WriteByte('N');
                            }

                            if (m & BuildSerially != 0L)
                            {
                                buf.WriteByte('L');
                            }

                            return(buf.String());
                        }
コード例 #6
0
ファイル: inst.cs プロジェクト: zjmit/go2cs
                                public static @string String(this Inst i)
                                {
                                    bytes.Buffer buf = default;
                                    buf.WriteString(i.Op.String());
                                    foreach (var(j, arg) in i.Args)
                                    {
                                        if (arg == null)
                                        {
                                            break;
                                        }

                                        if (j == 0L)
                                        {
                                            buf.WriteString(" ");
                                        }
                                        else
                                        {
                                            buf.WriteString(", ");
                                        }

                                        buf.WriteString(arg.String());
                                    }
                                    return(buf.String());
                                }