Why does C.JR clear target bit 0?
It has jalr x0, 0(rs1) semantics; JALR clears bit 0 after forming its target.
Jump via register: target is rs1 with bit 0 cleared. CR format. rs1!=x0.
C.JR (CR format) jumps with the semantics of jalr x0, 0(rs1): its target comes from rs1 with bit 0 cleared. It is valid only when rs1!=x0 (rs1=x0 is reserved) and saves no return address.
This interactive model shows only architectural decode, operands, and state changes, not a pipeline, cache, or timing model.
C.JR does not write a link register.
Awaiting state update: the highlighted fields and calculation above show the current step; no architectural result has been committed yet.
C.JR uses CR format and has jalr x0, 0(rs1) semantics: it clears target bit 0 and writes no return address.
Understand this scenario with real code like «c.jr ra # return».
It has jalr x0, 0(rs1) semantics; JALR clears bit 0 after forming its target.