python - 如何在汇编器中使用 IF 伪操作处理前向引用

标签 python python-3.x assembly 6502

我正在用 Python 编写一个 6502 汇编器,但不知道如何处理这个问题:

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

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

我在想也许我可以根据 if 语句是否找到真相来同时生成符号表的多个版本,然后决定在第二遍中使用哪个版本,但这听起来很糟糕 em> 影响了我的表现。

最佳答案

这并不是对你问题的真正回答,更多的是解释为什么你可以完好无损地承认失败。

考虑以下因素:

.org $400
label1: nop
.if label2 - label1 == 1
        nop
.endif
label2: nop

最后的组装是什么?如果 .if 内的位被排除,则条件为 true,并且 .if 内的位应包含嗯>。相反,如果包含 .if 内的位,则条件为 false,并且应排除 .if

我认为限制 .if 使用代码中进一步定义的标签是完全合理的。

关于python - 如何在汇编器中使用 IF 伪操作处理前向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52157961/

相关文章:

assembly - 如何在汇编中获取 16 字节对齐的地址

c - 从 C 调用的 Intel 8086 汇编程序

python - 错误 : Unsupported format, 或损坏的文件:预期的 BOF 记录

python - Pandas to_excel 在空白电子表格中写入数据框结果 - 如何使用 xlwt 写入 excel?

python - 读取2个.txt文件,访问其中的数据,然后打印

python - 时间数据 '2017-09-05 18:32:38.159+00' 与格式 '%Y-%m-%d %H:%M:%S.%f%z' 不匹配

python - 在python中将多个值绘制到一个键

assembly - 引用没有美元符号的常量是否有不同的含义?

python - 有没有办法从word文档中专门挑出一个句子

python - 在 Python 中序列化子集合(使用 jsonpickle)