Compiler Explorer
https://thechipletter.substack.com/p/compiler-explorer
Automated Summary
Compiler Explorer (CE) is a useful tool for anyone interested in compilers or computer architecture. It allows users to enter source code, and the site immediately shows the compiled output in a panel on the right. CE supports 69 source languages, over 2000 compilers, and a wide range of target architectures. CE is open-source, and most people will use the online version, which is free and supported by donations and sponsorships. CE is a great tool for learning assembly language, comparing the output from different compilers, and understanding code and how it runs. It can also show the LLVM Intermediate Representation and provides access to tools like the LLVM Machine Code Analyzer. CE can show the bytecode generated by interpreted languages and even provides a simple complete IDE.
Author here. Thanks for all the upvotes - and Compiler Explorer is awesome - but I’m not sure this should be on the front page as it’s mostly a collection of links. @dang
I disagree. I found it to be a very nice approachable high-level walkthrough of what CE can do. I've used CE for various things, but still learned about several capabilities that I didn't know about and can make use of.
And calling something like this just "a collection of links"... have you seen the crap that passes for a web page on today's web? I'll take a manually curated collection of links with some useful commentary any day over the AI-generated "here are 30 answers to your question and several similar questions, with repeats and contradictory answers thrown in for free" things I find all over the place.
> but I’m not sure this should be on the front page as it’s mostly a collection of links
I disagree. A lot of time there's a link to a project on Hacker News without any kind of about page. I significantly prefer to go to an about / demo page that tells me about the tool, with links to the tool itself.
> Disclaimer: We are now entering a ‘rabbit hole’ that may consume several hours of your time.
I really enjoyed skimming the article; seeing your results instead of taking the time to learn how to use the tool and generate similar results.
I have never seen it called anything other than godbolt and rightfully so because it's a fantastic, free, open source tool (so that guy deserves all the notoriety furnished by everyone knowing the tool by only his name).
For me (on every domain highlighted in github) it's
which renders the code unreadableapparently those are fonts 'Liberation mono' and 'Consolas' on macos
> may consume several hours of your time
Several hours? More like few lives, the stack is just too big to deal within a single life :)
And the rabbit hole goes even deeper with external tools like https://alive2.llvm.org/ce/ and mirrored versions for obscure architectures
As a low-level performance-oriented engineer I use the Compiler Explorer almost every day. It is a great tool, give it a try.
Is Common Lisp the only language with this built-in?
The Emacs Lisp mode has support for it, too - I have Alt-F8 open the disassembly of the current function in a new window next to the current window.Julia has it it's called code_native http://www.jlhub.com/julia/manual/en/function/code_native
you were probably looking for
Heh, I didn't really think about it, but to finish out the example:
And to optimize away everything:Indeed. Keep in mind though that the disassembly begins at an offset and doesn't contain the function header, i.e. FOO is quite a bit larger than 6 bytes.
Related. Others?
The Compiler Explorer Story – Matt Godbolt - https://news.ycombinator.com/item?id=40140698 - April 2024 (5 comments)
Matt Godbolt: Five things you didn't realise your CPU did for you - https://news.ycombinator.com/item?id=33312400 - Oct 2022 (16 comments)
Compiler Explorer - https://news.ycombinator.com/item?id=33224542 - Oct 2022 (107 comments)
Happy 10th Birthday Compiler Explorer - https://news.ycombinator.com/item?id=31470251 - May 2022 (20 comments)
Compiler Explorer - https://news.ycombinator.com/item?id=24066570 - Aug 2020 (48 comments)
Compiler Explorer - https://news.ycombinator.com/item?id=18671993 - Dec 2018 (44 comments)
How it works: Compiler Explorer - https://news.ycombinator.com/item?id=16295493 - Feb 2018 (25 comments)
Godbolt: Enter C, get Assembly - https://news.ycombinator.com/item?id=13182726 - Dec 2016 (151 comments)
Compiler Explorer – now with side-by-side compiler comparison - https://news.ycombinator.com/item?id=12627295 - Oct 2016 (6 comments)
Compiler Explorer - https://news.ycombinator.com/item?id=11671730 - May 2016 (38 comments)
Interactive C++ Assembly Explorer - https://news.ycombinator.com/item?id=9861294 - July 2015 (8 comments)
See What Your C Function Compiles To - https://news.ycombinator.com/item?id=9808870 - June 2015 (2 comments)
Interactive Go source to assembly - https://news.ycombinator.com/item?id=9085158 - Feb 2015 (12 comments)
Nibble sort competition winner on GCC Explorer - https://news.ycombinator.com/item?id=9049864 - Feb 2015 (1 comment)
C/C++ Fiddle - https://news.ycombinator.com/item?id=7593109 - April 2014 (40 comments)
Interactively watch how your C++ gets compiled. - https://news.ycombinator.com/item?id=4020814 - May 2012 (1 comment)
Well, as awesome as the godbolt explorer and similar tools are, I see the danger of them aiding in premature optimization.
Wait, people use them for benchmarks? I just use them to find quick workarounds to incrutable compiler errors and language idiosyncracies. I wouldn't trust a web app for any serious optimization testing (unless the web was my target platform).
I think that Amdahl's law explains it much more succinctly.