0

在学校,我们学习了 ARC 汇编语言。Miles Murdocca 在《计算机体系结构原理》一书中使用它来教授计算机体系结构。ARC 程序如下所示:

!
!  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

我想为该语言手写一个解析器,但很难将我关于解析器的基本知识应用到汇编语言中。例如,我无法绕开汇编程序的抽象语法树

有人可以指出解析高级语言和汇编语言或汇编代码的区别吗?

4

1 回答 1

3

解析并没有根本的不同。你仍然有标记、标签、语法等。

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

在汇编中,代码的结构通常更像是一个简单的指令列表,一层深,与底层机器指令有相当密切的对应关系。因此,您可能会发现可以将语法“树”表示为单个扁平列表。

于 2017-03-01T04:40:50.073 回答