The thing is that the `struct sm4_instruction` values are "ephemeral", they are only created to be used as an input to write_sm4_instruction() and currently they don't allocate heap memory.
I made the extended register `struct sm4_xregister` to avoid allocating heap memory and having to take it into account and free it everywhere it is used, and its `.r` field can be initialized as a regular register.
Eventually we are going to need those structs in heap memory; the idea is that sm4_instruction won't be ephemeral, but rather we'll eventually do passes over it.