Processors these days are mostly 32 or 64 bit. This means that the instructions they process have this size.
We often hear that a 32-bit operating system is limited to 4GB=(2^32 bits) of RAM due to the fact that the length of a RAM address needs to hold inside 32 bits.
But in fact, when we look at how instructions look, you often have way less than 32 bits to load a word.
Let's take the x86 mov
instruction, you have an opcode, a source and a destination address.
My question is, how can we possibly load something from a 32 bit long address?
Do we always need to have a pointer to that address in a place in memory that has a smaller address that can be used in an instruction?
Thanks