HL.BSTART¶
48位长度的HL.BSTART指令在支持增强指令扩展的处理器中允许使用,这条指令相比标准版本的BSTART提供更大范围的跳转距离,因此可用于更长距离的跳转场景。
汇编语法¶
其中:
- BlockType:该参数代表块类型,如果是标量块,则可缺省
.STD标识。 - BrType:该参数代表块指令的跳转方式,可选类型包括3种偏移类跳转。
- label:该参数代表跳转目标位置的标签,其相对于本指令的偏移距离除以2后编码于simm[29:1]字段。
HL.BSTART指令支持的块类型和跳转方式见下表:
| BlockType | 支持的BrType |
|---|---|
| STD | direct, call, cond |
| SYS | direct, call, cond |
| FP | direct, call, cond |
编码格式¶
低16bit编码:
高32bit编码:
- BlockType 域
BlockType 用于指示执行该块指令的引擎类型,具体编码如下:
| BlockType | 块类型 | 汇编标识 |
|---|---|---|
| 0 | Standard Block | .STD |
| 1 | System Block | .SYS |
| 2 | Floating-point Block | .FP |
| 3-15 | RESERVE | RESERVE |
- BrType 域
BrType 描述了当前块的跳转方式,决定了如何从当前块跳转到下一个块。具体编码如下:
| BrType | 跳转类型 | 解释 |
|---|---|---|
| 0 | invalid | 无效 |
| 1 | fall | 顺延(Fall Through),用于支持Fixup处理的块 |
| 2 | direct | 直接跳转(Direct Branch) |
| 3 | cond | 条件跳转(Conditional Branch) |
| 4 | call | 直接调用(Direct Call) |
| 5,6,7 | reserve | 保留 |