I've been geeking out on the COSMAC 1802 lately -- it was the first processor that I owned all just for me, and that I wrote programs for (in machine code -- not assembly).
One of the features of this chip is that while the usual ALU is 8-bit and centered around memory fetches and the accumulator (which they call the 'D' register), there's a 16 x 16-bit register file. Any one of these registers can be incremented or decremented, either as an explicit instruction or as part of a fetch (basically, you can use any one of them as an index, and you can "fetch and increment").
How would you do this most effectively today? How might it have been done back in the mid 1970's when RCA made the chip? Would it make a difference if you were working with a CPLD, FPGA, or some ASIC where you were determined to minimize chip area?
I'm assuming that the original had one selectable increment/decrement unit that wrote back numbers to the registers, but I could see them implementing each register as a loadable counter -- I just don't have a good idea of what might use the least real estate.
Thanks.