页面框架已切换为简体中文。尚未完成本地化的交互标签暂时使用英文;ASL/NDF 源、稳定标识和证据在所有语言中保持原文。
PTO-SCALAR-MODEL-DISPATCH-DECODE
PTO-SCALAR-MODEL-DISPATCH-DECODEASL 伪代码
下面直接显示完整的 ASL 所有者。
// PTO-UNIT: {"id":"PTO-SCALAR-MODEL-DISPATCH-DECODE","surface":"scalar","classification":["model","dispatch","decode"],"depends_on":["generated:decoders","PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"]}// PTO-REQ-SCALAR-DISPATCH-001, PTO-REQ-SCALAR-CONSTRAINT-001: decoded scalar// execution with catalog-generated form and family legality.//// Every accepted scalar family has a form-to-effect binding. Unknown or// operand-illegal encodings are rejected; there is no silent unsupported path.
type ScalarExecutionStatus of enumeration { ScalarExecution_Executed, ScalarExecution_Rejected};
pure func ScalarHandlerWritesTPC(handler: ScalarSemanticHandler) => booleanbegin return handler == ScalarHandler_JumpRelative || handler == ScalarHandler_JumpRegister || handler == ScalarHandler_ArchitectureEnterRequest;end;
pure func ScalarDecodedSelector(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => Reg5Selectorbegin let raw = DecodeScalarOperandRaw(instruction, form, field); return UInt(raw[4:0]) as Reg5Selector;end;
pure func ScalarDecodedWord(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => Wordbegin let raw = DecodeScalarOperandRaw(instruction, form, field); if ScalarOperandSignedness(form, field) == ScalarField_Signed then case ScalarOperandWidth(form, field) of when 5 => return SignExtend{PTO_XLEN}(raw[4:0]); when 12 => return SignExtend{PTO_XLEN}(raw[11:0]); when 17 => return SignExtend{PTO_XLEN}(raw[16:0]); when 22 => return SignExtend{PTO_XLEN}(raw[21:0]); when 24 => return SignExtend{PTO_XLEN}(raw[23:0]); when 29 => return SignExtend{PTO_XLEN}(raw[28:0]); when 32 => return SignExtend{PTO_XLEN}(raw[31:0]); otherwise => unreachable; end; end; return ZeroExtend{PTO_XLEN}(raw);end;
pure func ScalarDecodedBits19(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => bits(19)begin return DecodeScalarOperandRaw(instruction, form, field)[18:0];end;
pure func ScalarDecodedBits20(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => bits(20)begin return DecodeScalarOperandRaw(instruction, form, field)[19:0];end;
pure func ScalarDecodedBits4(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => bits(4)begin return DecodeScalarOperandRaw(instruction, form, field)[3:0];end;
pure func ScalarDecodedBits5(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => bits(5)begin return DecodeScalarOperandRaw(instruction, form, field)[4:0];end;
pure func ScalarDecodedSystemRegisterAddress( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => SystemRegisterAddressbegin return DecodeScalarOperandRaw(instruction, form, field)[23:0];end;
pure func ScalarDecodedBoolean(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => booleanbegin return DecodeScalarOperandRaw(instruction, form, field)[0] == '1';end;
pure func ScalarDecodedMemoryOrder( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}) => MemoryOrderbegin let acquire = ScalarDecodedBoolean(instruction, form, ScalarField_aq); let release = ScalarDecodedBoolean(instruction, form, ScalarField_rl); if acquire && release then return MemoryOrder_AcquireRelease; elsif acquire then return MemoryOrder_Acquire; elsif release then return MemoryOrder_Release; else return MemoryOrder_Relaxed; end;end;
readonly func ScalarDecodedAtomicAddress( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => Wordbegin let address = ReadDecodedScalarRegister(instruction, form, field); let far = ScalarDecodedBoolean(instruction, form, ScalarField_far); return AtomicAddress(address, far);end;
pure func ScalarDecodedBits32(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => bits(32)begin return DecodeScalarOperandRaw(instruction, form, field)[31:0];end;
pure func ScalarDecodedUInt6(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => integer {0..63}begin return UInt(DecodeScalarOperandRaw(instruction, form, field)[5:0]);end;
pure func ScalarDecodedUInt7(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => integer {0..127}begin return UInt(DecodeScalarOperandRaw(instruction, form, field)[6:0]);end;
pure func ScalarDecodedBitfieldWidth(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}) => integer {1..64}begin return UInt(DecodeScalarOperandRaw(instruction, form, ScalarField_imml)[5:0]) + 1;end;
pure func DecodeScalarBinaryRightModifier(raw: bits(2)) => ScalarRightModifierbegin case raw of when '00' => return ScalarRight_SignedWord; when '01' => return ScalarRight_UnsignedWord; when '10' => return ScalarRight_NegateOrNot; when '11' => return ScalarRight_None; end;end;
pure func DecodeScalarComparisonRightModifier(raw: bits(2)) => ScalarRightModifierbegin case raw of when '00' => return ScalarRight_None; when '01' => return ScalarRight_SignedWord; when '10' => return ScalarRight_UnsignedWord; when '11' => return ScalarRight_NegateOrNot; end;end;
pure func DecodeScalarSelectRightModifier(raw: bits(2)) => ScalarRightModifierbegin if raw == '11' then return ScalarRight_NegateOrNot; else return ScalarRight_None; end;end;
pure func DecodeScalarAddressRightModifier(raw: bits(2)) => ScalarRightModifierbegin case raw of when '00' => return ScalarRight_None; when '01' => return ScalarRight_SignedWord; when '10' => return ScalarRight_UnsignedWord; when '11' => return ScalarRight_NegateOrNot; end;end;
pure func ScalarDecodedBinaryRightModifier( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}) => ScalarRightModifierbegin let raw = DecodeScalarOperandRaw( instruction, form, ScalarField_SrcRType)[1:0]; return DecodeScalarBinaryRightModifier(raw);end;
pure func ScalarDecodedComparisonRightModifier( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}) => ScalarRightModifierbegin let raw = DecodeScalarOperandRaw( instruction, form, ScalarField_SrcRType)[1:0]; return DecodeScalarComparisonRightModifier(raw);end;
pure func ScalarDecodedSelectRightModifier( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}) => ScalarRightModifierbegin let raw = DecodeScalarOperandRaw( instruction, form, ScalarField_SrcRType)[1:0]; return DecodeScalarSelectRightModifier(raw);end;
pure func ScalarDecodedAddressRightModifier( instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}) => ScalarRightModifierbegin let raw = DecodeScalarOperandRaw( instruction, form, ScalarField_SrcRType)[1:0]; return DecodeScalarAddressRightModifier(raw);end;
readonly func ReadDecodedScalarRegister(instruction: bits(48), form: integer {0..PTO_SCALAR_FORM_COUNT-1}, field: ScalarOperandField) => Wordbegin return ReadScalarRegisterOperand(ScalarDecodedSelector(instruction, form, field));end;
架构行为
该内部模型单元不在双语读者指南迁移范围内;请直接阅读本页的 ASL/NDF 所有者与验证证据。
NDF 条款
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
No NDF clause is attached to this unit.
Evidence index
6 matching entries
Executable evidence1
PTO-SCALAR-MODEL-DISPATCH-DECODE compiles as an independent normative unit
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-DISPATCH-DECODE
- categorySTATIC-INVARIANT
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-MODEL-DISPATCH-DECODE-STATIC-001- Path
tests/asl/scalar/model/dispatch/decode/scalar-static-decode-contract-001.asl- Kind / role
- static-invariant
- Pass condition
- the complete model and this unit's static invariant compile
- SHA-256
b2e0ae1c9bf67f177f4f29a549be5b1285a3d3e6d205b389268145334967acf9
Commit-scoped evidence5
spec/evidence/release-traceability-readiness.json · closed
PTO-EVIDENCE-RELEASE-TRACEABILITYSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-TRACEABILITY- Path
spec/evidence/release-traceability-readiness.json- Kind / role
- ASL/NDF/documentation/AVS traceability
- SHA-256
c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
spec/evidence/instruction-contract-closure.json · closed
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURESources and references
- Complete stable ID
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE- Path
spec/evidence/instruction-contract-closure.json- Kind / role
- mnemonic and encoding contract closure
- SHA-256
3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
spec/evidence/architecture-readiness.json · open
PTO-EVIDENCE-ARCHITECTURE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-ARCHITECTURE-READINESS- Path
spec/evidence/architecture-readiness.json- Kind / role
- architecture maturity and blockers
- SHA-256
4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
spec/evidence/release-gate-readiness.json · ready-for-exact-head-verification
PTO-EVIDENCE-RELEASE-GATE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-GATE-READINESS- Path
spec/evidence/release-gate-readiness.json- Kind / role
- exact-head gate readiness
- SHA-256
a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
spec/release-manifest.json · draft
PTO-EVIDENCE-RELEASE-MANIFESTSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-MANIFEST- Path
spec/release-manifest.json- Kind / role
- release content and encoding fingerprints
- SHA-256
1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
Unit metadata
Open 4 generated metadata fields
Open generated traceability record
{
"classification": [
"model",
"dispatch",
"decode"
],
"documentation": "docs/scalar/model/dispatch/decode.md",
"id": "PTO-SCALAR-MODEL-DISPATCH-DECODE",
"mnemonic": null,
"readiness_subjects": [],
"semantic_tests": [],
"source": "asl/scalar/model/dispatch/decode.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-MODEL-DISPATCH-DECODE-STATIC-001"
]
}来源与发布信息
展开 commit、路径、hash、版本和规范所有者
- 发布
0.58.5· 候选发布- Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812- ASL SHA-256
212dce7a845a9477d78302be500e95a97cb3ceb037a1ac983a87145d334e520d- 生成文档
- docs/scalar/model/dispatch/decode.md · 已融合到当前页面
- 文档 SHA-256
93ab3bb3b33b835ba28a928917fecfa9b650f582b0e9fcdbcf0cc64cb6227167
精确所有者
- ASL PTO-SCALAR-MODEL-DISPATCH-DECODE
asl/scalar/model/dispatch/decode.asl