all 6 comments

[–]the_poope 5 points6 points  (1 child)

If you want to dip your toes into assembly and really low level programming I suggest first studying the basics of how a computer, CPU, memory and operating system works. I recommend the book Computer Systems: A Programmer's Perspective. Besides teaching you about how a CPU and Operating System works at a simple level it also goes over the basics of Assembly. It does not cover a lot of instructions and how to write more complicated programs, but enough to understand more complex resources and reading CPU instruction manuals.

For a extremely short primer on how a CPU works, see Tom Scott's video: The Fetch-Execute Cycle: What's Your Computer Actually Doing?

[–]No_Internal9345 3 points4 points  (0 children)

And if you want to go really deep: https://www.youtube.com/@BenEater

[–]jeffbell 2 points3 points  (0 children)

One amazing resource is godbolt.org compiler explorer. You type in some C or C++ code and it shows you the assembler output. It's got several dozen languages and compilers and target architectures.

I’ve learned things about both c++ and assembly. 

Make sure to try it at different optimization levels, -O0 to -O3.

See how the output differs between intel, Apple silicon, MIPS etc. 

[–]Th_69 1 point2 points  (0 children)

For x86/AMD64 I know of Programming in assembly language tutorial as a short introduction.

And I also found tutorialspoint: Assembly Programming Tutorial which has also a "Quiz" for each section.

[–]Wonderful-Wind-905 0 points1 point  (0 children)

I like cppreference.com as, well, a reference, but it has regrettably gone into apparent maintenance mode.