.set 伪操作
用途
在类型和值中设置一个等于表达式的符号。
语法
描述
.set 伪操作将在类型和值中设置等于 表达式 值的 姓名 符号。 使用 .set 伪操作可能有助于避免使用频繁使用的表达式时出现错误。 将该表达式等同于符号,然后引用该符号而不是该表达式。 要更改表达式的值,请仅在 .set 语句中进行更改。 但是,重新组装程序是必需的,因为 .set 分配仅在组装时发生。
当汇编程序迂到 .set 伪操作时,将对 表达式 参数进行求值。 此评估是使用 表达式的组合处理 中的规则完成的; 评估结果的类型和值存储在内部。 如果对 表达式进行求值导致无效类型,那么所有使用符号 姓名 的指示信息都将发生错误。
在其他指示信息中使用 姓名 时,将使用符号 姓名的存储类型和值,而不是原始表达式定义。
参数
| 项 | 描述 |
|---|---|
| 名称 | 表示可以在 .set 语句中其定义之前使用的符号; 允许在模块中使用转发引用。 |
| expression | 用于定义符号 姓名的类型和值。 必须定义在表达式中引用的符号; 不允许转发引用。 这些符号不能是未定义的外部 expressions.The 符号不必在出现 .set 伪操作 appears.The Expression 参数也可以引用寄存器号,但不能在运行时引用寄存器的内容。 |
示例
- 以下示例说明了如何使用 .set 伪操作:
.set ap,14 # Assembler assigns value 14 # to the symbol ap -- ap # is absolute. . . lil ap,2 # Assembler substitutes value 14 # for the symbol. # Note that ap is a register # number in context # as lil's operand. - 以下示例将导致由于类型无效而发生组合件错误:
.csect a1[PR] L1: l 20,30(10) .csect a2[rw] .long 0x20 L2: .long 0x30 .set r1, L2 - L1 # r1 has type of E_REXT # r1 has value of 8 .long r1 + 10 .long L2 - r1 # Error will be reported. # L2 is E_REL # r1 is E_REXT # E_REL - E_REXT ==> Invalid type