| ▲ | amiga386 an hour ago | |
nitpick: ARM1/2 were 26-bit. The PC register used the bottom 26 bits for the address of the next instruction, and the upper 6 bits for status flags. Lots of code involves getting or twiddling those flags by amending the PC register directly. There is nowhere in the architecture you could put the missing 6 bits. This was unlike the "24-bit" 68000 where the hardware package actually only had 24 address lines, but its address registers and PC were 32-bit. https://en.wikipedia.org/wiki/26-bit_computing#Early_ARM_pro... The ARM3 resolved the situation by adding a separate 32-bit clean PC register and a separate status register, instead of the combined monstrosity. All software had to be rewritten to use the new registers if it wanted to be "32-bit clean", unlike 68000 software which either just worked fine, or revealed the programmer was an imbecile who thought they could get away with storing random data in the top 8 bits of addresses. Bonus: the Archimedes memory map (00000000-03FFFFFF, i.e. 26 bits) https://www.chiark.greenend.org.uk/~theom/riscos/docs/ArcMem... | ||