3 ms·
"always" is not the weird one -- that's just the same as everyone else. "Never" is weird, immediately spending 1/16th of the opcode space (256 million instructi
by brucehoult 5y ago
"always" is not the weird one -- that's just the same as everyone else. "Never" is weird, immediately spending 1/16th of the opcode space (256 million instructions) on NO-OPs.
PC being a general-purpose register was historically not uncommon. PDP-11 and VAX both did it and they were kinda popular at one time.
Load/store multiple was also fairly common with, for example, both 68000 and VAX having it. IBM 360 also, though using a register range rather than a bitmap -- a less general solution, but good enough, and much easier to make go fast.
- naniwaduni 5y ago> "always" is not the weird one -- that's just the same as everyone else. "Never" is weird, immediately spending 1/16th of the opcode space (256 million instructions) on NO-OPs. Worse, iirc what looks like it should be the slot for the "never" condition actually does exactly the same thing as "always".
- brucehoult 5y agoHmm. I guess I never actually tried it. The A64 manual says 1111 on a Bcc etc disassembles as NV but does the same as AL. The ARM7TDMI manual says 1111 is reserved and don't use it. I don't know the actual behaviour. Aha. The Welsh&Knaggs "ARM Book" says before ARMv3 NV meant NV. In ARMv3 and ARMv4 NV is unpredictable. And in ARMv5 NV is used to encode "various additional instructions that can only be executed unconditionally".