解析汇编语言和高级编程语言有区别吗?

时间:2017-03-01 04:34:25

标签: parsing assembly token lexer arc-architecture

在学校,我们学习了ARC汇编语言。它被用在了“计算机体系结构原理”和#34;由Miles Murdocca教授计算机体系结构。 ARC Programm看起来像这样:

!
!  A simple ARC program to add two numbers
!
        .begin
        .org 2048
 main:  ld [x], %r1            ! load x into %r1
        ld [y], %r2            ! load y into %r2
        addcc %r1, %r2, %r3    ! %r3 <- %r1 + %r2  
        st %r3, [z]            ! store %r3 into z
        halt                   ! halt simulator
        jmpl %r15+4, %r0       ! standard return
 x:     15
 y:     9
 z:     0
        .end

我想亲自为该语言编写解析器,但很难将解析器的基本知识应用于汇编语言。 例如,我无法绕过汇编程序的抽象语法树

有人能指出解析高级语言和汇编语言或汇编代码的差异吗?

1 个答案:

答案 0 :(得分:3)

解析并没有根本不同。你仍然有令牌,标签,语法等。

您可能会发现的主要区别是大多数高级语言都支持深层嵌套表达式,这会导致更深层次的语法树(想想嵌套循环,匿名函数等)。

在汇编中,代码通常更像是一个简单的指令列表,深度一级,与底层机器指令的关系非常接近。因此,您可能会发现可以将语法“tree”表示为单个展平列表。