Settings

Theme

Show HN: C to Go Assembly

github.com

98 points by krishnasrinivas 9 years ago · 11 comments

Reader

justinclift 9 years ago

Probably worth mentioning the blog post too: https://blog.minio.io/c2goasm-c-to-go-assembly-bb723d2f777f

Out of curiosity, any idea how well does Go asm works with Delve (the Go debugger)?

theparanoid 9 years ago

Go needs another option other than assembly. Either compiler intrinsics like C/C++ or something, anything, else.

mhh__ 9 years ago

So, is go assembly the IR inside the Go compiler?

  • fwessels 9 years ago

    No, it is not an IR code such as in Java or .Net. At compile time it is translated into opcodes for the corresponding architecture that you are compiling for.

    • chrisseaton 9 years ago

      I disagree. I think saying that it's the lowered intermediate representation in the Go compiler pipeline is a really good description. It's equivalent to the LIR in Java's C2 compiler. I'm not sure what the equivalent is in .net.

      Fundamentally, it's a representation and it's intermediate isn't it?

      • uluyol 9 years ago

        No, not really. Go's assembly might be considered somewhat higher level than regular assembly code, but it's certainly architecture specific. The examples highlighted use x86 SIMD instructions unavailable on other architectures.

        Freedoms taken by the go assemblers also seem to be decreasing as the compiler becomes smarter. E.g. instruction reordering is no longer performed (https://github.com/golang/go/issues/15837).

        You can read about the assemblers here: https://golang.org/doc/asm

        • chrisseaton 9 years ago

          Yes I know it's architecture specific. Many lowered IRs are. The equivalent I gave, Java's C2 IR, is also architecture specific, which is why I used it.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection