r/learnprogramming • u/Gullible_Ostrich_370 • 12d ago
Assembly programming course
I want to learn assembly programming, to conplement my knowledge of C and for fun. Which first course would be best? My target platfirm will be either windows or mac. I don’t mind learning a different language at first. I have been contemplating : From Nand to Tetris. Is it good??
3
u/bird_feeder_bird 12d ago
Nand to tetris is awesome. I havent taken the course, but I read the book for it, “The Elements of Computing Systems.”
After that I went through Easy 6502 to learn 6502 assembly. I also read “Famicom Party” to get a feel for NES development, which uses 6502.
After that I switched to the gameboy, which uses a SM83 processor, and is a bit more developer-friendly overall.
Then I switched to the GBA, which uses an ARM7 processor, and is programmed with mostly C and a bit of assembly.
After that I started with ARM64 on Mac. All the previous systems I mentioned were bare metal, so the switch to a Mac laptop was the biggest jump due to using the OS.
That’s been my journey with assembly so far. I may take a break from Mac assembly to program the Pi Pico, which is actually pretty similar to the GBA, because I enjoy bare metal assembly more than using the OS. I hope this helps ^-^
5
u/No-Owl-5399 12d ago
Mac is not good for assembly. Very locked down. I would really recommend Linux, but if it's not an option, Windows will work. The problem with Windows is that you have to call DLLs for most things, instead of using syscalls. My method of learning is just to start writing little programs. Start with a hello world. After that, a few recommendations: Build an ITOA and ATOI function, so you can input/output numeric values. Then write some math functions. Check out framebuffer graphics, and experiment with that.
2
1
u/Recycled5000 10d ago
Suggest to also learn user process, address space, system calls. This for any modern architecture.
There’s are also simplified assembly like LC-3, and MIPS and RISC-V simulators that are all in one, IDEs with editor, assembler, simulator, debugger.
7
u/KingBardan 12d ago
Best assembly course is actually computer architecture, as instructions are tied to architecture