我正在开发一个 2 遍汇编程序,并且一直在网上查看示例代码以熟悉自己。我找到了以下代码,但它似乎有问题。你能告诉我有什么问题吗?似乎并没有停止。这是代码
http://www.ccodechamp.com/c-program-of-two-pass-assembler-c-codechamp/
还有一个关于汇编器的一般问题......据我了解,pass是创建默认信息。您能分解一下我需要采取的步骤吗?我想读取文件并检查标签并创建符号表。我知道如何读取文件,但不知道如何检查每个刺痛。
最佳答案
程序无法检测到 END
语句。
首先,input.txt
必须有一个END
语句,它必须是该行中唯一的3个字符(所以没有前导/尾随空格,并丢弃您在示例输入文件中看到的 //
注释),并且它后面必须跟一个换行符(如果 END 是最后一个)输入中的行,在许多文本编辑器中,这意味着它后面必须有一个空行)。
其次,C 源代码中似乎存在错误;它不承认 fgets 捕获的字符串包含尾随换行符这一事实。在 PASS1
和 PASS2
中都可以找到以下代码行:
while(strcmp(line,"END")!=0)
在这两种情况下,END
后面都应跟有 \n
:
while(strcmp(line,"END\n")!=0)
关于c - 两遍汇编程序修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187938/