在assemb中如何使用IF伪操作处理前向引用

2024-06-10 19:55:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

那么,如果.if pseudo op测试的是一个前向引用的符号,而这个符号在第一个过程中还没有定义,我该怎么办??没有它,我就无法正确地展开代码来找出标签的位置来确定符号!你知道吗

我在想,也许我可以根据if语句是否找到真值来模拟生成多个版本的symbol表,然后决定在第二遍中使用哪个版本,但这听起来像是对我的性能的一个糟糕的打击。你知道吗


Tags: 代码版本标准if定义过程符号标签
1条回答
网友
1楼 · 发布于 2024-06-10 19:55:01

这并不是对你问题的真正回答,更多的是解释为什么你可以毫无保留地承认失败。你知道吗

考虑以下几点:

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

什么是总装?如果.if内的位被排除,则条件为真,并且.if内的位应被包括。相反地,如果.if中的位被包括在内,则条件为假,并且.if应该被排除。你知道吗

我认为限制.if使用在代码后面定义的标签是完全合理的。你知道吗

相关问题 更多 >