Is shamt=0 in C.SLLI an illegal instruction?
No; that code point is a HINT, not an ordinary C.SLLI shift writeback.
Logical left shift of rd. CI format.
C.SLLI uses CI format to logically shift the value in rd left by shamt and write it back to rd; it expands to slli rd, rd, shamt[5:0]. Code points with shamt=0 or rd=x0 are HINTs. In RV32C, shamt[5] must be zero; shamt[5]=1 code points are designated for custom extensions.
Shows only RISC-V ISA-visible 16-bit encoding, operands, and state; it does not simulate a pipeline, cache, endianness implementation, or timing.
x10 <- 0x0000000C
C.SLLI is a 16-bit CI logical left shift that updates rd in place; shamt=0 or rd=x0 is a HINT rather than ordinary C.SLLI execution.
Understand this scenario with real code like «c.slli x10, 2 # x10 <<= 2».
No; that code point is a HINT, not an ordinary C.SLLI shift writeback.