<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.audean.com/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>Audean Wiki - go:internals</title>
        <description></description>
        <link>https://wiki.audean.com/</link>
        <lastBuildDate>Tue, 21 Apr 2026 10:54:05 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.audean.com/_media/wiki/logo.png</url>
            <title>Audean Wiki</title>
            <link>https://wiki.audean.com/</link>
        </image>
        <item>
            <title>All pages</title>
            <link>https://wiki.audean.com/go/internals/all_pages?rev=1606152216</link>
            <description>All pages

A

	*  All pages
	*  asm

C

	*  cdecl
	*  Copyrights

F

	*  Front Page
	*  FS

G

	*  G
	*  get tls

M

	*  M

N

	*  Notes by MC

S

	*  split stacks
	*  stdcall

T

	*  textflag
	*  Third-party articles
	*  Thread-local storage

U

	*  User statistics

X

	*  x86 calling conventions</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>asm</title>
            <link>https://wiki.audean.com/go/internals/asm?rev=1606152216</link>
            <description>asm

You can find some valuable information in the docs for the Plan 9 assembler,  predecessor of the 8a/6a/5a assemblers.

Some x86 assembly helpful links:

	*  movs, rep, cld etc.
		*  Intel&#039;s manual might also be interesting...</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>Copyrights</title>
            <link>https://wiki.audean.com/go/internals/copyrights?rev=1606152216</link>
            <description>Copyrights

All text in this wiki, except where otherwise stated, is:
Copyright by &quot;Go internals (unofficial) wiki&quot; authors.

and available on terms of the Creative Commons Attribution-ShareAlike license.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>FS</title>
            <link>https://wiki.audean.com/go/internals/fs?rev=1606152216</link>
            <description>FS

FS is a register name in the x86 architecture. For its usage, see: Thread-local storage.

It is a segment register, which means that the current setting of the segment descriptor table maps references to FS to some underlying RAM.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>G</title>
            <link>https://wiki.audean.com/go/internals/g?rev=1606152216</link>
            <description>G

Letter “g” -- is generally often used as a shorthand to a phrase “(current) goroutine”  -- see: &lt;http://groups.google.com/group/golang-nuts/browse_thread/thread/3bdf4b609417939e/8ddea965ec294ad6#8ddea965ec294ad6&gt;.

Strictly related:

	*  G (struct G) -- is an internal C struct containing some data related to a goroutine -- see: pkg/runtime/runtime.h
	*  g (G g) -- is a thread-local variable of type</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>get tls</title>
            <link>https://wiki.audean.com/go/internals/get_tls?rev=1606152216</link>
            <description>get tls

get_tls(r) is an assembly macro for retrieving the location (address) of Thread-local storage (TLS is thus an acronym). It is defined in automatically generated (during Go building) file asm.h.

For GOOS=386, get_tls(r) resolves to: MOVL 0x2c(FS), r

See also</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>M</title>
            <link>https://wiki.audean.com/go/internals/m?rev=1606152216</link>
            <description>M

Letter “m” -- is generally often used as a shorthand to a phrase (current) OS thread  -- see: (link).

Strictly related:

	*  M (struct M) -- is an internal C struct containing some data related to an OS thread -- see: pkg/runtime/runtime.h
	*  &#039;m&#039; (M m) -- is a thread-local variable of type</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>Notes by MC</title>
            <link>https://wiki.audean.com/go/internals/notes_by_mc?rev=1606152216</link>
            <description>Notes by MC

Links

	*  &lt;http://doc.cat-v.org/plan_9/4th_edition/papers/compiler&gt;
		*  extern register

	*  &quot;callbacks&quot; attempts (&quot;Out-of-band callbacks with cgo&quot;)
		*  other notes, probably related
		*  blog entry on cgo callbacks, dated 24.04.2010.
		*  CL 834045 - &quot;Library support for cgo export&quot;.
			*  introduces startcgocallback(), endcgocallback() in runtime/proc.c, cgocallback() in runtime/cgocall.c, runcgocallback()</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>split stacks</title>
            <link>https://wiki.audean.com/go/internals/split_stacks?rev=1606152216</link>
            <description>split stacks

On Split Stacks in gcc wiki (link thanks to the jra&#039;s thoughts blog), by Ian Lance Taylor (one of the core Go developers).

For additional details about implementation in Go, check the big blocks of comments in pkg/runtime/proc.c.

A blog posting titled “A trip down the (split) rabbit hole</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>stdcall</title>
            <link>https://wiki.audean.com/go/internals/stdcall?rev=1606152216</link>
            <description>stdcall

See: x86 calling conventions.

Note, that for WinAPI calls (and callbacks) on x86 the convention is stdcall.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>textflag</title>
            <link>https://wiki.audean.com/go/internals/textflag?rev=1606152216</link>
            <description>textflag

A flag for the “ld” linker, with special link-time information about a function.

textflag 7

Extracted from a comment in pkg/runtime/proc.c:


 * Newproc and deferproc need to be textflag 7
 * (no possible stack split when nearing overflow)</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>Third-party articles</title>
            <link>https://wiki.audean.com/go/internals/thirdparty_articles?rev=1606152216</link>
            <description>Third-party articles

(The articles are annotated with publication date. That&#039;s because Go internals change from time to time, so older writeups have higher risk of becoming obsolete with time.)

	*  2013.09.08 The Go netpoller. A short, high-level overview.
	*  2013.06.30</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>Thread-local storage</title>
            <link>https://wiki.audean.com/go/internals/thread-local_storage?rev=1606152216</link>
            <description>Thread-local storage

See an explanation on Wikipedia and on MSDN.

Additional notes:

	*  In an x86 environment, the FS register points to the current value of the “Thread Information Block” (TIB) structure. (ref.),(ref.)
		*  Wikipedia on TIB (Thread Information Block) / TEB (Thread Environment Block)
			*  specifically, FS:0x2C - “</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>User statistics</title>
            <link>https://wiki.audean.com/go/internals/user_statistics?rev=1606152216</link>
            <description>User statistics

(on the original wiki)
 User  Edits  Pages Created  Files Contributed  First Edit Date  Last Edit  Last Page Edited  MateuszCzapliński   80     15    15   unknown            2014-01-10 15:27:10  Thirdparty articles  tcnsc</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
        <item>
            <title>x86 calling conventions</title>
            <link>https://wiki.audean.com/go/internals/x86_calling_conventions?rev=1606152216</link>
            <description>x86 calling conventions

See: Wikipedia on cdecl, stdcall and other calling conventions].

Also highly informative: The history of calling conventions, part 1 and further parts.

An extract from “libcgo/386.S” about the 8c/8a/8g calling convention:


  * Calling into the 8c tool chain, where all registers are caller save.</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 23 Nov 2020 17:23:36 +0000</pubDate>
        </item>
    </channel>
</rss>
