3 ms·
There are many levels to work through so you'll have to decide where you want to start, and whether to start top down, or bottom up (or a bit of both?) and whet
by SillyUsername 3y ago
There are many levels to work through so you'll have to decide where you want to start, and whether to start top down, or bottom up (or a bit of both?) and whether you want to know the electrical side too (I have a basic understanding, but not a lot here - enough to understand what I see on an oscilloscope is 0 and 1s - based on pull down/up and clock frequency - but not how to use it).
Ground up this video is fantastic and shows why first computers were made from lightbulbs: https://youtu.be/FU_YFpfDqqA https://youtu.be/FU_YFpfDqqA
Top down you'll to want to start working with a lower level language, if you're confident with languages like Java, start looking at C, particularly pointer arithmetic which reflects memory locations.
From there look at how drivers work - C on an Arduino for example to control electronics. This is simpler in some ways that trying the equivalent through many framework abstraction layers you don't need to know about on a PC. This teaches you registers, byte and memory manipulation to control hardware, as well serial data transfer technology (low level data transfer protocols over a wire one which modern USB is based). It also helps with your understanding for how some hardware such as a GPS you can literally read NMEA (coordinate) data as a string over a serial port/USB connection https://en.wikipedia.org/wiki/NMEA_0183 https://en.wikipedia.org/wiki/NMEA_0183 . This was an eye opener for me ~20 years ago.
Going down from the level of memory and byte manipulation you get to assembly language, which tends to be machine/CPU specific operations but will teach you the architecture side of a computer, and depending on the arch you learn align with CPU instruction sets (as well as basic copy memory type ops, modern CPUs have SIMD instructions, e.g. MMX or hardware encryption etc).
You can go slightly lower here to microcode but the gains would be minimal in advancing your general knowledge.
Lower from there you need to consider how the components are made and their electrical properties, e.g. flipflops, CPU parts like ALU etc. You're then pretty much at the ground up stage so the video above shouldn't be an eye opener...
Then to test your knowledge end to end... write an emulator for something like a Gameboy in Javascript :D
https://imrannazar.com/GameBoy-Emulation-in-JavaScript:-The-CPU https://imrannazar.com/GameBoy-Emulation-in-JavaScript:-The-...