3 ms·
This is a bit of a side step to the article, but I recommend anyone who wants to really learn low level programming try to write a simple piece of software for
by sircastor 6y ago
This is a bit of a side step to the article, but I recommend anyone who wants to really learn low level programming try to write a simple piece of software for the NES. The 6502 is well known, how the NES operates is likewise well known. Is not easy by any means, but I found it to be very rewarding and instructional to how computers work. Alternatively, following Ben Eater’s 6502 computer videos is likewise instructional.
I admit this may have had the effect on me because the NES had a special place in my childhood.
- user-the-name 6y agoI would go for the GBA, which has a much more comfortable processor, and some very nice graphics hardware. It really hits a sweet spot for capability vs. constrainedness.
- molticrystal 6y agoOr you could go from an even more fundamental level with a simple course https://www.nand2tetris.org/ https://www.nand2tetris.org/ You build up a computer from simulated logic gates, constructing the ALU, CPU, Ram, I/O etc. The opcodes are comparable to those in the CPUs you mentioned, but you have the added benefit of the magic that occurs when it is able to process those opcodes. The best part is, thanks to the courses exceptional guidance and streamlining, it only takes about half a day or so to get it to that point. After that you can follow the rest of the course to making a compiler, etc. Or you could move to an NES emulator as you mentioned. The nand2tetris halfway mark would also be a good jumping point for the principles, compiler, and RISC equipment mentioned in the OP's course.
- Gibbon1 6y agoI once designed a microcoded bit slice processor on paper. It's useful because it's conceptually simple enough to get in your head. And there isn't anything software related that really can't be mapped to it. Or an extension of it.
- ibeckermayer 6y agoI've been working on a project off and on where I'm implementing the processor described in that course on an FPGA. Most of the digital design is done at this point: https://github.com/ibeckermayer/Nand2TetrisFPGA https://github.com/ibeckermayer/Nand2TetrisFPGA