Skip to content

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

BSTART CALL encoding
Bitfield encoding diagram. MSB is on the left, LSB on the right.

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) →