RISC-V ISA Explorer · Compressed (Zc*)

Zce: Embedded Compressed

Ratified 2023-04 · version 1.0.0

Bundles the code-size-reduction Zc extensions that microcontroller-class cores are expected to implement.

Typical use: RV32E/RV64E-focused compressed subset

Specification

Open Zce in the explorer

Dependencies

Requires

Incompatible with

Members

Instructions (54)

MnemonicNameEncodingMatchMask
C.ADDAdd----------------1001----------100x90020xf003
C.ADDIAdd a sign-extended non-zero immediate----------------000-----------010x10xe003
C.ADDI16SPAdd a sign-extended non-zero immediate----------------011-00010-----010x61010xef83
C.ADDI4SPNAdd a zero-extended non-zero immediate, scaled by 4, to the stack pointer----------------000-----------000x00xe003
C.ADDIWAdd a sign-extended non-zero immediate----------------001-----------010x20010xe003
C.ADDWAdd word----------------100111---01---010x9c210xfc63
C.ANDAnd----------------100011---11---010x8c610xfc63
C.ANDIAnd immediate----------------100-10--------010x88010xec03
C.BEQZBranch if Equal Zero----------------110-----------010xc0010xe003
C.BNEZBranch if NOT Equal Zero----------------111-----------010xe0010xe003
C.EBREAKBreakpoint exception----------------10010000000000100x90020xffff
C.JJump----------------101-----------010xa0010xe003
C.JALJump and Link----------------001-----------010x20010xe003
C.JALRJump and Link Register----------------1001-----00000100x90020xf07f
C.JRJump Register----------------1000-----00000100x80020xf07f
C.LBULoad unsigned byte, 16-bit encoding----------------100000--------000x80000xfc03
C.LDLoad double----------------011-----------000x60000xe003
C.LDSPLoad doubleword from stack pointer----------------011-----------100x60020xe003
C.LHLoad signed halfword, 16-bit encoding----------------100001---1----000x84400xfc43
C.LHULoad unsigned halfword, 16-bit encoding----------------100001---0----000x84000xfc43
C.LILoad the sign-extended 6-bit immediate----------------010-----------010x40010xe003
C.LUILoad Upper Immediate----------------011-----------010x60010xe003
C.LWLoad word----------------010-----------000x40000xe003
C.LWSPLoad word from stack pointer----------------010-----------100x40020xe003
C.MULMultiply, 16-bit encoding----------------100111---10---010x9c410xfc63
C.MVMove Register----------------1000----------100x80020xf003
C.NOPNon-operation----------------000-00000-----010x10xef83
C.NOTBitwise not, 16-bit encoding----------------100111---11101010x9c750xfc7f
C.OROr----------------100011---10---010x8c410xfc63
C.SBStore unsigned byte, 16-bit encoding----------------100010--------000x88000xfc03
C.SDStore double----------------111-----------000xe0000xe003
C.SDSPStore doubleword to stack----------------111-----------100xe0020xe003
C.SEXT.BSign-extend byte, 16-bit encoding----------------100111---11001010x9c650xfc7f
C.SEXT.HSign-extend halfword, 16-bit encoding----------------100111---11011010x9c6d0xfc7f
C.SHStore unsigned halfword, 16-bit encoding----------------100011---0----000x8c000xfc43
C.SLLIShift left logical immediate----------------000-----------100x20xe003
C.SRAIShift right arithmetical immediate----------------100-01--------010x84010xec03
C.SRLIShift right logical immediate----------------100-00--------010x80010xec03
C.SUBSubtract----------------100011---00---010x8c010xfc63
C.SUBWSubtract word----------------100111---00---010x9c010xfc63
C.SWStore word----------------110-----------000xc0000xe003
C.SWSPStore word to stack----------------110-----------100xc0020xe003
C.XORExclusive Or----------------100011---01---010x8c210xfc63
C.ZEXT.BZero-extend byte, 16-bit encoding----------------100111---11000010x9c610xfc7f
C.ZEXT.HZero-extend halfword, 16-bit encoding----------------100111---11010010x9c690xfc7f
C.ZEXT.WZero-extend word, 16-bit encoding----------------100111---11100010x9c710xfc7f
CM.JALTJump Via Table with Optional Link----------------101000--------100xa0020xfc03
CM.JTJump Via Table----------------101000000-----100xa0020xff83
CM.MVA01SMove two s0-s7 registers into a0-a1----------------101011---11---100xac620xfc63
CM.MVSA01Move a0-a1 into two registers of s0-s7----------------101011---01---100xac220xfc63
CM.POPDestroy function call stack frame----------------10111010------100xba020xff03
CM.POPRETDestroy function call stack frame and return to `ra`----------------10111110------100xbe020xff03
CM.POPRETZDestroy function call stack frame, move zero to `a0` and return to `ra`----------------10111100------100xbc020xff03
CM.PUSHCreate function call stack frame----------------10111000------100xb8020xff03