Does C.NOP freeze PC?
No. Successful execution of 16-bit C.NOP advances PC by two bytes. Registers and memory remain unchanged, and applicable performance counters increment according to architectural rules.
Fixed 16-bit no-operation. CI format; adjacent rd=x0, imm!=0 encodings are HINTs.
Ordinary C.NOP has the fixed 16-bit CI encoding 0x0001: funct3=000, rd=x0, imm=0, op=01, with no explicit operands. It changes no user-visible state except advancing PC by two bytes and incrementing applicable performance counters. It expands to nop (canonically addi x0, x0, 0). Code points with rd=x0 and nonzero imm in this space are HINTs. Available with RV32I/RV64I plus C or Zca.
RV32I/RV64I + C (or Zca); 16-bit, IALIGN=16.
c.nopAssume successful instruction fetch, no asynchronous interrupt or extra extension checks; one initial value per register.
0x0001Restore full register fields or fixed operands; distinguish ordinary encodings, HINTs and reserved encodings first.
These are teaching steps for architectural effects, not processor pipeline stages or cycles.
Fixed 16-bit no-operation. CI format; adjacent rd=x0, imm!=0 encodings are HINTs.
RV32I/RV64I plus C/Zca, PC=0x2000: successful c.nop gives PC=0x2002, unchanged registers and memory, and applicable counter increments.
No. Successful execution of 16-bit C.NOP advances PC by two bytes. Registers and memory remain unchanged, and applicable performance counters increment according to architectural rules.