Getting used to the architecture of RISC-V, I’m trying various experiments in a known working project to test my understanding of the instructions in both the long and the copressed form. I’m having no problem understanding how the assembler converts a long form (32-bit) instruction into a compressed form, but I’m puzzled by the errors, e.g. “Illegal Operand” when using compressed instructions.
Specifically, c.addi16sp and c.lwsp
Is there any chance that there is a document somewhere that explains what the compiler/assembler is complaining about?