第二轮
在第二次传递期间,汇编程序检查操作数以获取对存储位置的符号引用,并使用符号表中的信息来解析这些符号引用。
在第二道上,汇编程序:
- 检查操作数以获取对存储位置的符号引用,并使用符号表中的信息解析这些符号引用。
- 确保没有指令包含无效的指令表单。
- 将源语句转换为机器代码和常量,从而使用对象代码填充分配的空间。
- 生成包含错误消息 (如果发生) 的文件。
在第二次传递开始时,汇编程序第二次扫描每个源语句。 当汇编程序转换每个指令时,它会增加位置计数器中包含的值。
如果特定符号出现在源代码中,但在符号表中找不到该符号,那么表示从未定义该符号。 即,汇编程序在第一次传递期间扫描的任何语句的标签字段中都未迂到符号,或者该符号从来不是 .comm, .csect, .lcomm, .sect或 .set 伪操作的主题。
这可能是有意的外部引用或程序员错误,例如错误拼写符号名称。 汇编程序指示错误。 所有外部引用都必须出现在 .extern 或 .globl 语句中。
汇编程序会记录错误,例如不正确的数据对齐。 但是,许多对齐问题由不停止组合件的语句指示。 必须使用 -w 标志来显示这些警告消息。
程序员纠正组合件错误后,程序已准备好进行链接。
注: 如果在第一次传递中仅生成了警告,那么组合件进程将继续执行第二次传递。 汇编程序列表包含在汇编程序第二次传递期间生成的错误和警告。 在第一次传递中生成的任何警告都不会出现在汇编程序列表中。