操作数与参数
uimm5- unsigned return-address displacement from the embedded high halfword
Atomically retires the old block, snapshots its BARG.BPCN into a new indirect-call BARG, and writes the independent return target to ra.
PTO-BLOCK-BSTART-ICALLBSTART.ICALL <rt_label>, ->ra| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
uimm5 | 5 | unsigned | unsigned return-address displacement from the embedded high halfword | Encoded zero selects P+2 as the return target. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:27 | 5'b01010 |
| uimm5 | 26:22 | variable |
| Constant | 21:0 | 22'b0101100110000000000001 |
{
"reg": [
{
"bits": 22,
"name": "22'b0101100110000000000001"
},
{
"bits": 5,
"name": "uimm5"
},
{
"bits": 5,
"name": "5'b01010"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}BSTART.ICALL <rt_label>, ->ra
uimm5Decode 与 Operation 均直接来自指令所有者,并按执行阶段分开显示。
readonly func InstructionContractMatches_BSTART_ICALL(operation: CommandOperation) => booleanbegin return operation == CommandOperation_bstart_icall_32_50166001;end;readonly func InstructionContractHandler_BSTART_ICALL() => CommandSemanticHandlerbegin return CommandHandler_ExecuteBundleStart;end;
readonly func InstructionContractTransfer_BSTART_ICALL() => BundleTransferbegin return BundleTransfer_IndirectCall;end;
pure func InstructionContractWritesReturnAddress_BSTART_ICALL() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["BSTART.ICALL <rt_label>, ->ra"],"block":[],"catalog_indices":[16],"catalog_records":[{"asm":"BSTART.ICALL <rt_label>, ->ra","constraints":[],"encoding":[{"index":0,"mask":"0xf83fffff","match":"0x50166001","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"uimm5","pieces":[{"instruction_lsb":22,"value_lsb":0,"width":5}],"signedness":"unsigned","width":5}],"form_id":"bstart_icall_32_50166001","length_bits":32,"mnemonic":"BSTART.ICALL","semantic_family":"BBD","semantic_group":"BSTART","semantic_handler":"ExecuteBundleStart","semantic_summary":"Atomically retires the old block, snapshots its BARG.BPCN into a new indirect-call BARG, and writes the independent return target to ra.","status":"accepted"}],"classification":["execution"],"contract":{"block_composition":["BSTART.ICALL retires one active Standard or Floating block whose BARG.BPCN supplies the call target, then atomically opens a new Standard indirect-call block and writes ra."],"canonical_assembly":["BSTART.ICALL <rt_label>, ->ra"],"defaults":["Encoded uimm5 zero is a real zero displacement from the embedded C.SETRET halfword."],"encoding_class":"standalone-encoded","examples":["BSTART.ICALL <rt_label>, ->ra"],"exceptions":["No active retiring Standard or Floating block raises Fault_BundleControl before target or return-address effects.","An odd retiring BARG.BPCN raises Fault_InstructionPC before retiring-block effects.","Decode, applicability, target, or retiring-commit failure preserves ra and the retiring BARG and installs no candidate BARG."],"field_contracts":{},"field_zero_meanings":{"uimm5":"Encoded zero selects P+2 as the return target."},"legality":["This fused form is the only accepted indirect-call spelling; bare BSTART.* ICALL forms are deleted.","The retiring block must be Standard or Floating because System BARG has no selecting BPCN."],"memory_effects":["Any memory effects of the retiring block complete before the indirect-call BARG and ra are published; BSTART.ICALL itself performs no memory access."],"operands":[{"field":"uimm5","role":"unsigned return-address displacement from the embedded high halfword"}],"ordering":["Snapshot and validate retiring BARG.BPCN, successfully commit the retiring block, then atomically install the new STD BARG and write ra."],"standalone_opcode":true,"state_effects":["Installs BARG.BPC=P, BlockType=STD, BPCN=the retiring BARG.BPCN snapshot, TYPE=ICALL, TAKEN=1, and writes return_target to ra.","The indirect target is selected only when the new block later commits."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-BLOCK-BSTART-ICALL","mnemonic":"BSTART.ICALL","summary":"Atomically retires the old block, snapshots its BARG.BPCN into a new indirect-call BARG, and writes the independent return target to ra.","surface":"block"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-BSTART-ICALL-DECISION-BINDING-001// ndf: kind=contract level=L1 layer=block status=accepted// BSTART.ICALL 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-BSTART-ICALL-DECISION-BINDING-001// DOC-BEGIN: decodereadonly func InstructionContractMatches_BSTART_ICALL(operation: CommandOperation) => booleanbegin return operation == CommandOperation_bstart_icall_32_50166001;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_BSTART_ICALL() => CommandSemanticHandlerbegin return CommandHandler_ExecuteBundleStart;end;
readonly func InstructionContractTransfer_BSTART_ICALL() => BundleTransferbegin return BundleTransfer_IndirectCall;end;
pure func InstructionContractWritesReturnAddress_BSTART_ICALL() => booleanbegin return TRUE;end;// DOC-END: operation
BSTART.ICALL 是 ICALL 形式的 32 位 Block 起始命令。它建立待处理 Block 的身份和选择参数;真正执行 Block body 并提交结果的是完成后的整个 Block,而不是起始命令本身。
起始命令之后的 header 命令按顺序执行;BSTOP 或下一条 BSTART 是验证并退休完整 Block 的边界。当前所有者给出以下确切组成检查表:
BSTART.ICALL retires one active Standard or Floating block whose BARG.BPCN supplies the call target, then atomically opens a new Standard indirect-call block and writes ra.任何有效前序 Block 成功退休后,该命令初始化新的待处理 BARG 或操作描述符,并从顺序 PC 继续执行 header。仅仅成功解码起始命令,不会让 Block 目的结果或内存结果变得可见。 只有起始形式适用、目标检查和前序 Block 退休全部成功后,返回地址结果才会发布。
uimm5 提供编码偏移或加数;其确切分配域仍以下方生成契约为准。对适用性和目标检查而言,起始状态转换与前序 Block 退休是全有或全无的。起始命令成功后,后续完成边界会在任何 body 结果提交前验证完整组成。
保留选择器、无效目标、完成后的组成错误或前序退休失败,都会在新 Block 或 body 影响之前被拒绝。
以下为示例性示例,仅用于说明当前所有者,不替代其定义。
BSTART.ICALL <rt_label>, ->ra假设前序 Block 退休和目标检查成功,BSTART.ICALL <rt_label>, ->ra 会打开待处理的 BSTART.ICALL 形式;后续 header/body 命令仍是暂定状态,直到 BSTOP 或下一条 BSTART 验证完整组成。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
BSTART.ICALL 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-BSTART-ICALL-DECISION-BINDING-001asl/block/execution/BSTART.ICALL.asl5bc8047a23da2ba23a5834959d1219a3a38a4a50b8ab9174a4b96d8b93c28f7f164eafd40dabc9b622119581651d78426f238a0d4340522ad988785a34d0af3815 matching entries
PTO-AVS-BLOCK-BSTART-ICALL-BARG-001tests/asl/block/execution/BSTART.ICALL/block-state-bstart-icall-barg-001.aslbbae7d673d1b2b7553b48457e69bdab799882f3e1bac33872bc6cd80f279aa70PTO-AVS-BLOCK-BSTART-ICALL-DECODE-001tests/asl/block/execution/BSTART.ICALL/block-decode-bstart-icall-canonical-001.asla9e6821f84e6dead81f6ef06c8bfb5c7ab351f5dc0a2c45431f89e7eebda04bdPTO-AVS-BLOCK-BSTART-ICALL-ROLLBACK-001tests/asl/block/execution/BSTART.ICALL/block-fault-bstart-icall-rollback-001.aslf37357ba984f779b29808919e401ca09b05674735ba7d619cdc94ca51bfced78PTO-AVS-BLOCK-BSTART-ICALL-STANDALONE-REJECT-001tests/asl/block/execution/BSTART.ICALL/block-bound-bstart-icall-standalone-reject-001.asl99aa0ea116e98147a0f19f72a0bce1cffb36c273228accf10f887c52f8eabfd3PTO-AVS-BLOCK-BSTART-ICALL-SYS-SOURCE-001tests/asl/block/execution/BSTART.ICALL/block-fault-bstart-icall-sys-source-001.aslf0308b27a44e9b398b0fee76c5d74b7128d5f981b5987e3171d8af6a24911b19PTO-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-0032…
ADR-0032docs/status/decisions/0032-bundle-command-totality-and-profile-boundaries.mde1f91826817343c0977a565a91e495a15397b83fa2af227124f225821ffa54aeLoading ADR-0052…
ADR-0052docs/status/decisions/0052-direct-tile-and-bundle-catalog-closure.md5fdb38bf480e37affe5075f93b35a57d32803018c986bfe05160f188a19ccaf6Loading ADR-0055…
ADR-0055docs/status/decisions/0055-complete-bundle-bior-schema-and-defaults.mdd84224ee1980cb16a6c4efb6ce3c5c2649d5db27002e7e6429850da189a2cdffLoading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0077…
ADR-0077docs/status/decisions/0077-block-start-and-extension-reservations.md20e19c71c2c967447a115e353f5e3673fc14276dabbcf9a96922f54507536973{
"classification": [
"execution"
],
"documentation": "docs/block/execution/BSTART.ICALL.md",
"id": "PTO-BLOCK-BSTART-ICALL",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "BSTART.ICALL",
"ndf_clause": "PTO-INST-BLOCK-BSTART-ICALL"
},
"mnemonic": "BSTART.ICALL",
"readiness_subjects": [
"ADR-0032",
"ADR-0052",
"ADR-0055",
"ADR-0059",
"ADR-0077"
],
"semantic_tests": [
"PTO-AVS-BLOCK-BSTART-ICALL-BARG-001",
"PTO-AVS-BLOCK-BSTART-ICALL-ROLLBACK-001",
"PTO-AVS-BLOCK-BSTART-ICALL-STANDALONE-REJECT-001",
"PTO-AVS-BLOCK-BSTART-ICALL-SYS-SOURCE-001"
],
"source": "asl/block/execution/BSTART.ICALL.asl",
"surface": "block",
"tests": [
"PTO-AVS-BLOCK-BSTART-ICALL-BARG-001",
"PTO-AVS-BLOCK-BSTART-ICALL-DECODE-001",
"PTO-AVS-BLOCK-BSTART-ICALL-ROLLBACK-001",
"PTO-AVS-BLOCK-BSTART-ICALL-STANDALONE-REJECT-001",
"PTO-AVS-BLOCK-BSTART-ICALL-SYS-SOURCE-001"
]
}0.58.5 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd868125bc8047a23da2ba23a5834959d1219a3a38a4a50b8ab9174a4b96d8b93c28f7fc092e23797433cbda9667023da026ada099e844faa466b1dc48105fb11325071asl/block/execution/BSTART.ICALL.aslasl/block/execution/BSTART.ICALL.aslasl/block/execution/BSTART.ICALL.asl