Ask HN: Resources for getting started with bare-metal coding?
> Does anyone even work with assembly anymore?<p>I do, but very rarely code in assembly. Usually just read output of C++ compiler.<p>It’s hard to beat well-written manually vectorized C++ code. Even when the compiler obviously doing something wrong: <a href="https://developercommunity.visualstudio.com/content/problem/350355/the-compiler-optimized-a-single-very-fast-instruct.html" rel="nofollow">https://developercommunity.visualstudio.com/content/problem/...</a> The compiler appears to know about typical latency figures for these instructions, i.e. it reorders them when It can if it gonna help.<p>> how is software keeping up with hardware advances?<p>Barely. The only way to approach advertised compute performance of CPUs is SIMD instructions. Despite available in mainstream CPUs for couple decades now (Pentium 3 launched in 1999), modern compilers can only auto-vectorize very simple code.<p>Fortunately, these instructions are available as C and C++ compiler intrinsics. Supported by all modern compilers and quite portable in practice (across different compilers building for the same architecture).<p>> Do newer low-level languages like Rust and Go really utilize the massive advances that have taken place?<p>Both are worse than C++.<p>About what to start with… I would start with picking either CPU or GPGPU. GPUs have way more raw computing power. Programming models are entirely different between them.<p>If you’ll pick GPU, I’d recommend “CUDA by example” book, helped me when I started GPGPU programming. BTW, for GPUs, assemblies and instruction sets are proprietary i.e. no one works with assembly. There’re low-level assembly-like things, Nvidia PTX, MS shader assembly, but these instructions are not executed by hardware, GPU drives compiles them once again into proprietary stuff.<p>Don’t know good books for CPU SIMD, I started organically with some random articles and Intel reference, but I had many years of C and C++ programming when I did. Not sure it’ll work for you.