BSTART CALL¶
32-bit Base **Group:** BSTART |
Ch 04
Block ISA — Block-structured Control Flow |
**Length:**
32 | **Decode:** —
Assembly Syntax¶
BSTART.CALL <br_label>, <rt_label>, ->ra
Encoding¶
Description¶
Atomic fused call with independent call-target and return-target fields; transfers to the call block and writes ra. This exact aggregate is distinct from the generic bare-call form, which preserves ra and requires an adjacent SETRET or C.SETRET.
Pseudocode (informative)¶
P = CurrentPC();
call_target = P + (SignExtend(simm12) << 1);
ra = (P + 2) + (ZeroExtend(uimm5) << 1);
AtomicCallTransfer(call_target, ra);
Encoding Notes¶
Atomic fused CALL: call_target = P + (SignExtend(simm12) << 1); ra = (P + 2) + (ZeroExtend(uimm5) << 1). Both labels are explicit and independently relocatable.
Full Catalog Forms¶
| Assembly | Length | Decode |
|---|---|---|
BSTART.CALL <br_label>, <rt_label>, ->ra |
32 | — |
← [BSTART](../groups/bstart.md) [Index](../index.md) [All instructions](index.md) →