如何在汇编程序中使用 IF 伪操作处理前向引用

我正在用 Python 编写 6502 汇编程序,但不知道如何处理:

这是一个两遍汇编器,所以它在第一遍中计算出符号,然后在第二遍中填充它们。标准的东西。但!我希望它有一个“.if”伪操作,它将根据条件有条件地执行代码。

那么如果 .if 伪操作正在测试一个尚未在第一遍中定义的前向引用符号,我该怎么办?没有它,我无法正确扩展代码以找出标签的位置来确定符号!

我在想也许我可以根据 if 语句是否找到 Truth 来模拟生成多个版本的符号表,然后决定在第二遍中使用哪个版本,但这听起来对我的表现来说是一个可怕的打击。


慕尼黑5688855
浏览 153回答 1
1回答

扬帆大鱼

这并不是对您问题的真正答案,而是对为什么您可以完好无损地承认失败的解释。考虑以下:.org $400label1: nop.if label2 - label1 == 1        nop.endiflabel2: nop最后的组装是什么?如果排除了内的位,.if则条件为真,则应包括内的位。相反,如果包含 中的位,则条件为假,应排除 。.if.if.if我认为限制.if使用在代码下方定义的标签是完全合理的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python