News for hackers. Stuff that matters.
Re:How to Read Assembly Language by amelius on Tuesday March 02, 2021 @08:09AM (#26314899)
I don't understand this tool. My compiler has a flag for generating assembly output. That should be sufficient, no? Also, it more accurately reflects what my compiler actually generates given all the other flags.
Re:How to Read Assembly Language by pjc50 on Tuesday March 02, 2021 @08:47AM (#26315235)
Your compiler does, yes. Godbolt gives you everyone else's compilers, across a huge range of versions and architectures, without having to install anything.

It's quite often easier to just slam something into godbolt than to do it locally with a temporary file and gcc -S.

Re:How to Read Assembly Language by flohofwoe on Tuesday March 02, 2021 @08:12AM (#26314920)
An important feature of godbolt is quickly comparing the output and language feature support of different compilers, or different versions of the same compiler (e.g. what versions of MSVC support a specific C99 feature, or which new C++ feature is safe to use across clang, gcc and MSVC).

And most importantly, you can check what your code would look like when compiled for 6502 or Z80 ;)

Re:How to Read Assembly Language by amelius on Tuesday March 02, 2021 @08:24AM (#26315012)
I see, but I'm not convinced a web-tool is the best way to go about it if optimizing assembly is part of one's dayjob.

I do understand that it's nice to play with, and that it can have educational value. I would personally love to see WASM support, and a way to see e.g. LLVM intermediate code. But I'd want to see some more documentation on the website e.g. about the ABI so I know how the arguments of a function are passed in etc.

Re:How to Read Assembly Language by pjc50 on Tuesday March 02, 2021 @08:51AM (#26315280)
> I'm not convinced a web-tool is the best way to go about it if optimizing assembly is one's dayjob.

It isn't, because that's not what it's for. Besides, few people have optimizing assembly as a dayjob, and in that case you'd be writing it rather than reading it. Trying to juice a compiler into producing specific assembly output is frustrating and brittle. I suppose it's useful for seeing whether your autovectorisation has worked.

But the best use of godbolt - uniquely as a web tool - is to show other people what the output is.

(I wish more people would stop before saying "tool X is useless for workflow Y" and ask themselves what the intended workflow of tool X is. Not everything is for everybody, that would be impossible.)

> more documentation on the website e.g. about the ABI so I know how the arguments of a function are passed in etc

It just calls the underlying compiler executables. Consult their documentation.

Re:How to Read Assembly Language by detaro on Tuesday March 02, 2021 @08:57AM (#26315334)
There's quite a range between "looking at compiler output is sometimes useful" and "optimizing assembly is one's day job".

We use it all the time, it's certainly not just a toy.

I have the luxury of having a build farm with a large range of compilers and platforms available, so I could use that to rig something like godbolt. But that'd be spending probably days on setting something up, + ongoing maintenance, instead of just using an existing thing that does the job? If I really were only doing this kind of thing, that'd probably be worth it to be able to customize etc. But I'm not. It being a service (and thus basically automatically a web tool) is a a valuable feature.

It's also a great tool to share and communicate results of such investigations. Again, easy for a web tool.

Re:How to Read Assembly Language by flohofwoe on Tuesday March 02, 2021 @08:46AM (#26315229)
There's a few nice hidden features presented in Matt Godbolt's talk here:

https://www.youtube.com/watch?v=kIoZDUd5DKw

As for LLVM IR output, just use the right clang command line options:

https://www.godbolt.org/z/r7f6TY

Likewise for WASM:

https://www.godbolt.org/z/Kr6G3K