代码之家  ›  专栏  ›  技术社区  ›  Gary Paluk

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

  •  10
  • Gary Paluk  · 技术社区  · 17 年前

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

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

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

      LD不列颠哥伦比亚省

    一旦标记化,它需要转换为以下解析树(???)

      ___ LD ___
      |        |
     BC        nn
    

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

    01 n n
    

    LD DE,nn
    

    11 n n
    

    这意味着它提出了一个问题,LD节点是否根据操作数返回不同的结果,还是操作数返回了一些结果?这是如何实现的?如果时间允许,更简单的代码示例会很好。

    Yacc 或 Flex .

    3 回复  |  直到 10 年前
        1
  •  9
  •   Community Mohan Dere    9 年前

    看起来像这样:

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

    是的,你想在树上传递值。 调用了一种正式指定此类值传递的方法 langauge(在您的例子中,是您的汇编语法),带有值传递 看见 Wikipedia on attribute grammars .

    related question you asked 工具, DMS , 树信息流问题。你不应该感到惊讶, 作为一种高端语言操作工具,它可以处理 直接进行属性语法计算。

        2
  •  6
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

    不需要构建解析树。Z80操作码非常简单。它们由操作码和0、1或2个操作数组成,用逗号分隔。您只需要使用一个非常简单的解析器将操作码拆分为(最多3个)组件,不需要树。

        3
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

    实际上,操作码没有字节基,而是八进制基。我所知道的最好的描述是 DECODING Z80 OPCODES .

    推荐文章