Earlier quoted context omitted.
I assure you, that if we counted from zero, there would be an instruction to add and multiply in the same number of cycles as a multiply.
That's not possible - the subtract and multiply need to be consecutive (adjust index before multiply by element size), so even if it was a single instruction it would still take longer than a multiply that didn't have to wait for a preceding subtraction. The only way to avoid the speed penalty would be either to have a wasted element at offset 0, or to maintain the array base address as (address - (1 * element-size))…
Do you know the answer to that question? (I don't, but if someone does, it will settle this issue).