with a static array will D unroll the foreach for me automatically?
No, the language does not guarantee it. Some implementations (compilers) might unroll the loop as an optimization.
If not could my implementation of static iota (siota) be used to achieve this?
Yes, using foreach over a tuple generates code for every "iteration", effectively unrolling the loop.
Further is there a flag to DMD that generates assembly code so that I myself, in the future, can investigate the code generated by DMD?
No, DMD cannot emit assembly listings. You can use a disassembler (such as obj2asm or IDA), or a different compiler instead.