Operands and parameters
SSRID- short system-register identifier
C.SSRGET reads the complete encoded system-register address.
PTO-SCALAR-C-SSRGETc.ssrget SSR-ID, ->t| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
SSRID | 5 | encoding-defined | short system-register identifier | Encoded zero selects value zero of the short system-register identifier. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 15:11 | 5'b10000 |
| SSRID | 10:6 | variable |
| Constant | 5:0 | 6'b101100 |
{
"reg": [
{
"bits": 6,
"name": "6'b101100"
},
{
"bits": 5,
"name": "SSRID"
},
{
"bits": 5,
"name": "5'b10000"
}
],
"config": {
"bits": 16,
"fontsize": 13,
"hspace": 640,
"lanes": 1,
"offset": 0
}
}c.ssrget SSR-ID, ->t
SSRIDThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_C_SSRGET() => ScalarOperationbegin return ScalarOperation_C_SSRGET;end;readonly func InstructionContractHandler_C_SSRGET() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteCompressedSystemRegisterGet;end;
pure func InstructionContractRequiresSystemBlock_C_SSRGET() => booleanbegin return TRUE;end;
pure func InstructionContractSystemTransferKind_C_SSRGET() => bits(2)begin return '00';end;
pure func InstructionContractSystemAddressWidth_C_SSRGET() => integer {5,12,24}begin return 5;end;
pure func InstructionContractPushesTemporaryT_C_SSRGET() => booleanbegin return TRUE;end;
pure func InstructionContractDirectSystemIDLegal_C_SSRGET( identifier: bits(5)) => booleanbegin return identifier == '00000' || identifier == '00001' || identifier == '10000';end;// PTO-INSTRUCTION: {"assembly":["c.ssrget SSR-ID, ->t"],"block":[],"catalog_indices":[44],"catalog_records":[{"asm":"c.ssrget SSR-ID, ->t","constraints":[{"field":"SSRID","operator":"one-of","values":[0,1,16]}],"encoding":[{"index":0,"mask":"0xf83f","match":"0x802c","width_bits":16}],"encoding_kind":"C16","fields":[{"name":"SSRID","pieces":[{"instruction_lsb":6,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5}],"form_id":"c_ssrget_16_9d83a6f2749a","length_bits":16,"mnemonic":"C.SSRGET","semantic_family":"SYS","semantic_group":"SYS","semantic_handler":"ExecuteCompressedSystemRegisterGet","semantic_summary":"C.SSRGET reads the complete encoded system-register address.","status":"accepted"}],"classification":["sys"],"contract":{"block_composition":["C.SSRGET executes as one scalar operation in the body of an active SYS block."],"canonical_assembly":["c.ssrget SSR-ID, ->t"],"defaults":["Every displayed operand is encoded explicitly. Encoded zero is an assigned value and never denotes omission."],"encoding_class":"standalone-encoded","examples":["c.ssrget SSR-ID, ->t"],"exceptions":["Invalid block placement raises Illegal Block Exception before encoded-field legality or effects.","A reserved encoding or rejected access raises Illegal Instruction before destination, queue, system-state, or TPC effects."],"field_contracts":{},"field_zero_meanings":{"SSRID":"Encoded zero selects value zero of the short system-register identifier."},"legality":["Every fixed bit and explicit field constraint is checked before operation semantics.","The complete encoded address is checked against its RO, WO, RW, unknown-address, and current-ACR access rules before effects.","Only direct IDs 0, 1, and 16 are assigned; every other five-bit ID is reserved."],"memory_effects":["none"],"operands":[{"field":"SSRID","role":"short system-register identifier"}],"ordering":["Check block placement and encoded legality before source reads or architectural effects.","Snapshot every scalar source before the selected system effect, then advance TPC only after success."],"standalone_opcode":true,"state_effects":["Read THREAD_PTR, GLOBAL_PTR, or TIME for direct IDs 0, 1, or 16 and push the complete XLEN value to T.","A rejected access preserves T queue order and contents except for ordinary trap entry."]},"depends_on":["PTO-SCALAR-MODEL-SYS-REGISTERS"],"id":"PTO-SCALAR-C-SSRGET","mnemonic":"C.SSRGET","summary":"C.SSRGET reads the complete encoded system-register address.","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-SSRGET-DIRECT-IDS-001// ndf: kind=contract level=L1 layer=scalar status=accepted// C.SSRGET MUST assign only direct system-register IDs 0, 1, and 16.// Every other five-bit ID MUST reject before the implicit T destination effect.// NDF-END: PTO-C-SSRGET-DIRECT-IDS-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_C_SSRGET() => ScalarOperationbegin return ScalarOperation_C_SSRGET;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_C_SSRGET() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteCompressedSystemRegisterGet;end;
pure func InstructionContractRequiresSystemBlock_C_SSRGET() => booleanbegin return TRUE;end;
pure func InstructionContractSystemTransferKind_C_SSRGET() => bits(2)begin return '00';end;
pure func InstructionContractSystemAddressWidth_C_SSRGET() => integer {5,12,24}begin return 5;end;
pure func InstructionContractPushesTemporaryT_C_SSRGET() => booleanbegin return TRUE;end;
pure func InstructionContractDirectSystemIDLegal_C_SSRGET( identifier: bits(5)) => booleanbegin return identifier == '00000' || identifier == '00001' || identifier == '10000';end;// DOC-END: operation
C.SSRGET reads one assigned short system-register ID and pushes the complete XLEN value to T.
The ASL DOC region selects ScalarHandler_ExecuteCompressedSystemRegisterGet. Placement and encoded legality are checked before sources or system state can change.
The instruction occupies one scalar operation position in the body of an active SYS block.
SSRID carries the short system-register identifier.
Encoded zero is an assigned field value, never an omitted operand.
Direct IDs 0, 1, and 16 read THREAD_PTR, GLOBAL_PTR, or TIME and push the complete XLEN value to T.
A rejected read does not modify the selected destination or temporary-queue order beyond ordinary trap entry.
Every other five-bit ID is reserved; access and queue state are preserved on rejection except for ordinary trap entry.
Invalid SYS-block placement is rejected before field checks. Reserved encodings or denied access produce no destination, queue, system-state, or TPC effect beyond the ordinary trap envelope.
This spelling example is illustrative; exact legality and effects remain in the generated contract below.
Start with c.ssrget SSR-ID, ->t and trace its encoded fields through preflight before following the selected system effect.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
C.SSRGET MUST assign only direct system-register IDs 0, 1, and 16. Every other five-bit ID MUST reject before the implicit T destination effect.
PTO-C-SSRGET-DIRECT-IDS-001asl/scalar/sys/C.SSRGET.asl8c4f3d5f75154d66afef8962b25ca172c96d078623583e70589d010802669a47653edbc69720631027f0a1003a6fce7406b7c845f32bcfb4c3e71c85aaa3e68916 matching entries
PTO-AVS-SCALAR-C-SSRGET-DECODE-001tests/asl/scalar/sys/C.SSRGET/scalar-decode-c-ssrget-canonical-001.asl67980902ff262e69b923c93f08540468c2434f8b8ef97222c783ae9f4d910b44PTO-AVS-SYS-C-SSRGET-EXEC-001tests/asl/scalar/sys/C.SSRGET/scalar-exec-c-ssrget-direct-001.aslc341c32e992bec3028e8b7f267b9fbb9c44be8feef0185d022aabcaff76b9e13PTO-AVS-SYS-C-SSRGET-GLOBAL-001tests/asl/scalar/sys/C.SSRGET/scalar-exec-c-ssrget-global-001.asl35c31b2da0ab768a409777060571eecc8cc9ab1c9aaec4ee774becbb2790e87bPTO-AVS-SYS-C-SSRGET-PLACE-001tests/asl/scalar/sys/C.SSRGET/scalar-fault-c-ssrget-place-001.asl368e0ad83956df0059b4ec8b7d53b49d608eb7c52b3989e8a908a2f91ab63232PTO-AVS-SYS-C-SSRGET-RSVD-001tests/asl/scalar/sys/C.SSRGET/scalar-fault-c-ssrget-reserved-001.asl2e4f567e944c52379381ba8062182285b6144175ae9924580009e2eb0da8073bPTO-AVS-SYS-C-SSRGET-TIME-001tests/asl/scalar/sys/C.SSRGET/scalar-exec-c-ssrget-time-001.asl958f084b3fb1a4765cfd94d77f9262e43c05da69a0b51391ed1875f0ef8b38daPTO-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-0003…
ADR-0003docs/status/decisions/0003-pto-owned-system-register-names.mdc6a5379776c3b29c25f0896bc56f84d8f5c15832bbba0859b822aa99a65e342dLoading ADR-0018…
ADR-0018docs/status/decisions/0018-pto-v0-trap-disposition.mdce33454ffd2a595425ebece5954c9990ea2b9c4890008ad700599f767d7b9716Loading ADR-0031…
ADR-0031docs/status/decisions/0031-scalar-sys-totality-and-profile-boundaries.md5680b3516be6c28a1ccb198c99f5efb66317c65330f6d87434173024d2795a7dLoading 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": [
"sys"
],
"documentation": "docs/scalar/sys/C.SSRGET.md",
"id": "PTO-SCALAR-C-SSRGET",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "C.SSRGET",
"ndf_clause": "PTO-INST-SCALAR-C-SSRGET"
},
"mnemonic": "C.SSRGET",
"readiness_subjects": [
"ADR-0003",
"ADR-0018",
"ADR-0031",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-SYS-C-SSRGET-EXEC-001",
"PTO-AVS-SYS-C-SSRGET-GLOBAL-001",
"PTO-AVS-SYS-C-SSRGET-PLACE-001",
"PTO-AVS-SYS-C-SSRGET-RSVD-001",
"PTO-AVS-SYS-C-SSRGET-TIME-001"
],
"source": "asl/scalar/sys/C.SSRGET.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-C-SSRGET-DECODE-001",
"PTO-AVS-SYS-C-SSRGET-EXEC-001",
"PTO-AVS-SYS-C-SSRGET-GLOBAL-001",
"PTO-AVS-SYS-C-SSRGET-PLACE-001",
"PTO-AVS-SYS-C-SSRGET-RSVD-001",
"PTO-AVS-SYS-C-SSRGET-TIME-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868128c4f3d5f75154d66afef8962b25ca172c96d078623583e70589d010802669a4711dc89fdf7dbbe39a91735040c1cd12c15454fff728b3e460b1491dbac0e25ebasl/scalar/sys/C.SSRGET.aslasl/scalar/sys/C.SSRGET.aslasl/scalar/sys/C.SSRGET.asl