我正在用Python编写6502汇编器,但不知道如何处理:
这是一个两遍汇编器,因此它会在第一遍中找出符号,然后在第二遍中填充它们。标准的东西。但!我希望它具有一个“ .if”伪操作,它将根据条件有条件地执行代码。
那么如果.if伪op正在测试尚未在第一遍中定义的前向引用符号,该怎么办?没有它,我将无法正确扩展代码以找出标签的位置来确定符号!
我当时在想,也许我可以根据if语句是否找到True来模拟生成符号表的多个版本,然后决定在第二遍中使用哪个版本,但这听起来像很糟糕影响了我的表现。
答案 0 :(得分:4)
这实际上不是您的问题的答案,更多地说明了为什么您可以原封不动地接受失败。
请考虑以下内容:
.org $400
label1: nop
.if label2 - label1 == 1
nop
.endif
label2: nop
最后的组装是什么?如果.if
内的位被排除在外,则条件为真,并且.if
内的位应被包括在中。相反,如果.if
内的位被包括,则条件为假,应排除.if
。
我认为限制.if
使用代码下方定义的标签是完全合理的。