Skip to content

HL.BSTART CALL

48-bit HL. **Group:** BSTART  |  Ch 04   Block ISA — Block-structured Control Flow  |  **Length:** 48  |  **Decode:**

Assembly Syntax

  • HL.BSTART.CALL <br_label>, <rt_label>, ->ra

Encoding

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

Description

[48-bit HL.] 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(simm25) << 1);
ra = (P + 4) + (ZeroExtend(uimm5) << 1);
AtomicCallTransfer(call_target, ra);

Encoding Notes

  • Atomic fused CALL: call_target = P + (SignExtend(simm25) << 1); ra = (P + 4) + (ZeroExtend(uimm5) << 1). Both labels are explicit and independently relocatable.

Full Catalog Forms

Assembly Length Decode
HL.BSTART.CALL <br_label>, <rt_label>, ->ra 48
← [BSTART](../groups/bstart.md)    [Index](../index.md)    [All instructions](index.md) →