This is, I think, true of the 6502. However, on the Z80 chips, Turbo
Pascal, BDS C (I believe the initials were), Pascal MT+ and my Modula-2
compiler generated machine code. These were all commercially available
compilers.

The Z80 had two "pointer" registers (IX and IY) which made the compiler
writer's life a lot easier. It also had some 16 bit arithmetic operations.
Just as importantly, there were register move instructions. The 6800, and
I think also the 6502, required you to store values in memory and reload
them to move them between registers.
--