综述
块头包含了当前块指令的属性(块指令类型,跳转类型,输入,输出,微指令存储地址等信息)。通过一条或者多条块头指令的信息累积来表达最终的块头信息,不同的块头汇编指令传递不同的块指令信息。程序员根据代码需求,使用相应的块头指令。对于一般形态的块头指令,必须以BSTART指令开始,配合其他的块头指令来表达一个完整的块头,当前支持的块头指令及其含义如下表所示。LinxISA中定义了模板块指令,不显式包含微指令,由硬件实现决定具体的微指令形态。详细的模板块指令见模板块指令集:
| 块头伪指令 | Operand | 描述 |
|---|---|---|
| BSTART.<Btype> <BrType>, <label> | 块类型,跳转类型及表达式 | 块指令开始 |
| BSTOP | NULL | 块指令结束 |
| B.CATR | {TRAP, ATOMIC, <.AQ,.RL,.AQRL>, FAR} | 块属性 |
| B.TEXT | 表达式 | 指示块体指令的起始位置 |
| B.NEXT | 表达式 | 指示下一个块头的位置 |
Note:
-
从阅读体验的角度来说,建议块头指令大写和块体指令小写。汇编器允许块头块体指令均为小写。
-
组成块头的汇编伪指令序列由BSTART开始,如遇到下一个BSTART,则表示下一个块的开始。汇编器对块头指令进行逐条编码,不做块头汇编顺序上正确性的检查。
-
块头和微指令的汇编指令将在下文中介绍。在阅读下文的汇编指令时:语法类型为表达式表明可以将操作对象写成立即数的形式,也可以写成标签,{}符号表示使用{}中任意一个用','分割的字符串,<>表示<>内的内容可以缺省不写。
下面详细描述块头的汇编指令格式要求,对于不满足汇编器的输入汇编格式要求的情况,汇编器将给出错误提示,并终止汇编过程。