操作数与参数
uimm5- unsigned five-bit halfword displacement from the pre-increment TPC
Materialize an unsigned halfword-scaled TPC-relative return address in ra and captured return state.
PTO-SCALAR-C-SETRETc.setret uimm, ->ra| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
uimm5 | 5 | unsigned | unsigned five-bit halfword displacement from the pre-increment TPC | Encoded zero supplies numeric zero for the 5-bit unsigned immediate. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 15:11 | 5'b01010 |
| uimm5 | 10:6 | variable |
| Constant | 5:0 | 6'b010110 |
{
"reg": [
{
"bits": 6,
"name": "6'b010110"
},
{
"bits": 5,
"name": "uimm5"
},
{
"bits": 5,
"name": "5'b01010"
}
],
"config": {
"bits": 16,
"fontsize": 13,
"hspace": 640,
"lanes": 1,
"offset": 0
}
}c.setret uimm, ->ra
uimm5下面是该指令所有者中的 Operation;页面没有重写这段行为。
readonly func InstructionContractOperation_C_SETRET() => ScalarOperationbegin return ScalarOperation_C_SETRET;end;readonly func InstructionContractHandler_C_SETRET() => ScalarSemanticHandlerbegin return ScalarHandler_SetReturnAddress;end;
pure func InstructionContractTarget_C_SETRET( tpc: Word, uimm5: bits(5)) => Wordbegin let halfword_offset = ZeroExtend{PTO_XLEN}(uimm5); return tpc + LSL(halfword_offset, 1);end;// PTO-INSTRUCTION: {"assembly":["c.setret uimm, ->ra"],"block":[],"catalog_indices":[38],"catalog_records":[{"asm":"c.setret uimm, ->ra","constraints":[],"encoding":[{"index":0,"mask":"0xf83f","match":"0x5016","width_bits":16}],"encoding_kind":"C16","fields":[{"name":"uimm5","pieces":[{"instruction_lsb":6,"value_lsb":0,"width":5}],"signedness":"unsigned","width":5}],"form_id":"c_setret_16_335651ef6c27","length_bits":16,"mnemonic":"C.SETRET","semantic_family":"ALU","semantic_group":"ALU","semantic_handler":"SetReturnAddress","semantic_summary":"Materialize an unsigned halfword-scaled TPC-relative return address in ra and captured return state.","status":"accepted"}],"classification":["alu"],"contract":{"block_composition":["Standalone scalar return-address materialization. Fused BSTART.CALL and BSTART.ICALL define call formation separately."],"canonical_assembly":["c.setret uimm, ->ra"],"defaults":["C.SETRET has no omitted field. Encoded uimm5 zero is the real zero displacement and materializes the address of C.SETRET itself."],"encoding_class":"standalone-encoded","examples":["c.setret 0, ->ra","c.setret 31, ->ra"],"exceptions":["All uimm5 values are legal. C.SETRET performs no target dereference and raises no alignment, memory, arithmetic, or block-control exception."],"field_contracts":{},"field_zero_meanings":{"uimm5":"Encoded zero supplies numeric zero for the 5-bit unsigned immediate."},"legality":["Every uimm5 value 0..31 is assigned. The fixed destination is architectural ra (GPR10).","C.SETRET is legal as a standalone scalar operation and does not by itself form a call."],"memory_effects":["none"],"operands":[{"field":"uimm5","role":"unsigned five-bit halfword displacement from the pre-increment TPC"}],"ordering":["Snapshot the pre-increment TPC, compute the target, publish ra and captured return state together, then perform the ordinary two-byte sequential TPC advance."],"standalone_opcode":true,"state_effects":["Compute target = pre-increment TPC + (ZeroExtend(uimm5) << 1) with XLEN wrapping.","Atomically write the same target to GPR10 ra and the captured return-address state; successful dispatch then advances TPC by two bytes.","A later ordinary write to ra does not retroactively change the captured return-address state."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-C-SETRET","mnemonic":"C.SETRET","summary":"Materialize an unsigned halfword-scaled TPC-relative return address in ra and captured return state.","surface":"scalar"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-C-SETRET-DECISION-BINDING-001// ndf: kind=contract level=L1 layer=scalar status=accepted// C.SETRET MUST implement the mnemonic-local canonical assembly, encoded// legality, defaults, state and memory effects, ordering, and fault boundaries// declared in this owner. The operation region below is the executable binding// for every accepted decision that names this mnemonic.// NDF-END: PTO-C-SETRET-DECISION-BINDING-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_C_SETRET() => ScalarOperationbegin return ScalarOperation_C_SETRET;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_C_SETRET() => ScalarSemanticHandlerbegin return ScalarHandler_SetReturnAddress;end;
pure func InstructionContractTarget_C_SETRET( tpc: Word, uimm5: bits(5)) => Wordbegin let halfword_offset = ZeroExtend{PTO_XLEN}(uimm5); return tpc + LSL(halfword_offset, 1);end;// DOC-END: operation
C.SETRET 是一条 16 位标量 ALU 指令。它形成以半字为缩放单位的 TPC 相对返回地址,并把它记录到返回寄存器和已捕获的返回状态中;当前指令契约定义结果发布路径以及任何额外状态效果。
执行时先对编码输入做快照,然后形成以半字为缩放单位的 TPC 相对返回地址,并把它记录到返回寄存器和已捕获的返回状态中,最后才产生目标效果。
uimm5 是 5 位无符号字段,携带相对前进前 TPC 的无符号五位半字位移。这些角色来自当前指令契约;T/U 源只被读取和快照,不会因源选择而出队。编码零的精确含义列在下方生成的默认值章节中。
返回地址在返回寄存器和已捕获返回状态更新前计算完成。
该 ALU 操作不产生内存效果。成功完成架构效果后,TPC 前进 2 字节。
该操作不会产生隐藏的标量发布目标或隐式内存访问。架构变化仅限于当前契约列出的状态效果。
所有编码立即数都已分配;该指令不解引用目标,也不单独形成调用。
下方生成的合法性表是已分配字段值、保留编码和目标丢弃编码的权威说明。解码与源可用性检查先于架构效果完成。
本示例只用于演示当前 ASL 所有者,不替代规范操作。
以一个小型 C.SETRET 示例说明:前进前 TPC=0x100 且 uimm5=1 时,ra 与已捕获返回状态都得到返回地址 0x102。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
C.SETRET MUST implement the mnemonic-local canonical assembly, encoded legality, defaults, state and memory effects, ordering, and fault boundaries declared in this owner. The operation region below is the executable binding for every accepted decision that names this mnemonic.
PTO-C-SETRET-DECISION-BINDING-001asl/scalar/alu/C.SETRET.asl29c606a2143d6d42dd0b017f4e20702dc44bcbac3096030e17074b1cdc4f737aa67b15cf5f9c694f735af1d640395370f308137c594e2be403c0478afe7c39d513 matching entries
PTO-AVS-SCALAR-C-SETRET-BOUND-001tests/asl/scalar/alu/C.SETRET/scalar-exec-c-setret-boundary-001.aslc5cfa44f0986fe79fffbe2b021520ae5d492fab407ff686b9f860c43d2b5c1bfPTO-AVS-SCALAR-C-SETRET-DECODE-001tests/asl/scalar/alu/C.SETRET/scalar-decode-c-setret-canonical-001.asl274a42a4ba17e2e73efbc37492e61f6eb8c56704fed5d8957b83bb184ef95300PTO-AVS-SCALAR-C-SETRET-WRAP-001tests/asl/scalar/alu/C.SETRET/scalar-exec-c-setret-wrap-001.asl9d5c87121864dd36a6d1f4a59679957cdfabd8d528bf5842696a3f7cf292d38cPTO-AVS-SCALAR-C-SETRET-ZERO-001tests/asl/scalar/alu/C.SETRET/scalar-bound-c-setret-zero-001.asld179022443011d9418c27acef0b78c3ed4dc265f8b2a27da04bf40a097159149PTO-EVIDENCE-RELEASE-TRACEABILITYPTO-EVIDENCE-RELEASE-TRACEABILITYspec/evidence/release-traceability-readiness.jsonc7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3ePTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREspec/evidence/instruction-contract-closure.json3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106aPTO-EVIDENCE-ARCHITECTURE-READINESSPTO-EVIDENCE-ARCHITECTURE-READINESSspec/evidence/architecture-readiness.json4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004PTO-EVIDENCE-RELEASE-GATE-READINESSPTO-EVIDENCE-RELEASE-GATE-READINESSspec/evidence/release-gate-readiness.jsona0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0PTO-EVIDENCE-RELEASE-MANIFESTPTO-EVIDENCE-RELEASE-MANIFESTspec/release-manifest.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8Loading ADR-0021…
ADR-0021docs/status/decisions/0021-scalar-pc-relative-and-return-address.md99c06f12ee973312181938672a9e059a0dc5a0c4e08effd666616b8006e5f5f9Loading ADR-0026…
ADR-0026docs/status/decisions/0026-scalar-alu-totality-and-alias-order.md41d126f224dddc371832120f1b02eab64e426872fdcbea452bad77c90bdec349Loading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0084…
ADR-0084docs/status/decisions/0084-scalar-system-and-queue-operations.mde068992fa81e2c4ac46e492391a2f784141d68e041bf0b9e0586c37217d1e08c{
"classification": [
"alu"
],
"documentation": "docs/scalar/alu/C.SETRET.md",
"id": "PTO-SCALAR-C-SETRET",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "C.SETRET",
"ndf_clause": "PTO-INST-SCALAR-C-SETRET"
},
"mnemonic": "C.SETRET",
"readiness_subjects": [
"ADR-0021",
"ADR-0026",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-SCALAR-C-SETRET-BOUND-001",
"PTO-AVS-SCALAR-C-SETRET-WRAP-001",
"PTO-AVS-SCALAR-C-SETRET-ZERO-001"
],
"source": "asl/scalar/alu/C.SETRET.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-C-SETRET-BOUND-001",
"PTO-AVS-SCALAR-C-SETRET-DECODE-001",
"PTO-AVS-SCALAR-C-SETRET-WRAP-001",
"PTO-AVS-SCALAR-C-SETRET-ZERO-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd8681229c606a2143d6d42dd0b017f4e20702dc44bcbac3096030e17074b1cdc4f737a5eeb5af9e6af21bd3bf4d3a583a6a678f7de51b3cfd954139117ee8f1380131basl/scalar/alu/C.SETRET.aslasl/scalar/alu/C.SETRET.aslasl/scalar/alu/C.SETRET.asl