gpt4 book ai didi

parsing - 编写 Z80 汇编程序 - 词法 ASM 并使用组合构建解析树?

转载 作者:行者123 更新时间:2023-12-02 06:39:38 26 4
gpt4 key购买 nike

我对编写汇编程序的概念非常陌生,即使在阅读了大量 Material 之后,我仍然很难理解几个概念。

  1. 将源文件实际分解为 token 的过程是什么?我相信这个过程称为词法分析,我已经到处搜索有意义的真实代码示例,但我找不到如此简单的代码示例,非常受欢迎;)

  2. 解析时,信息是否需要在树中向上或向下传递?我问的原因如下,取:

    LD BC,nn

一旦标记化,它需要变成下面的解析树(???)

  ___ LD ___
| |
BC nn

现在,当遍历这棵树时,它需要生成以下机器代码:

01 n n

如果指令是:

LD DE,nn

那么输出需要是:

11 n n

这意味着它提出了一个问题,LD 节点是否根据操作数返回不同的内容,或者是操作数返回某些内容?这是如何实现的?如果时间允许的话,更简单的代码示例将非常好。

我最感兴趣的是在这里学习一些原始流程,而不是查看先进的现有工具,因此在将我发送到 Yacc 之前请记住这一点。或Flex .

最佳答案

嗯,你真正想要的树的结构对寄存器和存储器进行操作的指令涉及偏移位移和索引寄存器的寻址模式看起来像这样:

    INSTRUCTION-----+
| | |
OPCODE REG OPERAND
| |
OFFSET INDEXREG

是的,您想要在树中上下传递值。正式指定此类值传递的方法称为“属性语法”,你可以为你的属性装饰语法语言(在你的情况下,你的汇编语法)与值传递以及对这些值的计算。如需了解更多背景信息,请参阅Wikipedia on attribute grammars .

related question you asked中,我讨论了一个工具,DMS ,它处理表达式语法和构建树。作为语言操作工具,DMS 面临着完全相同的上下树信息流问题。你不应该感到惊讶,作为高端语言操作工具,它可以处理直接进行属性语法计算。

关于parsing - 编写 Z80 汇编程序 - 词法 ASM 并使用组合构建解析树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1305091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com