解析汇编语言和高级编程语言有区别吗?
Is there in difference in parsing an assembly language and a high-level programming language?
我们在学校学习了 ARC 汇编语言。它在 Miles Murdocca 的 "Principles of Computer Architecture" 书中用于教授计算机体系结构。
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
我想为该语言手写一个解析器,但很难将我关于解析器的基本知识应用到汇编语言中。
例如,我无法掌握汇编程序的 抽象语法树 。
谁能指出解析高级语言和汇编语言或汇编代码的区别?
解析并没有根本的不同。你还有标记、标签、语法等
您可能会发现的主要区别是大多数高级语言支持深层嵌套表达式,这会导致更深层次的语法树(想想嵌套循环、匿名函数等)。
在汇编中,代码的结构通常更像是一个简单的指令列表,深一层,与底层机器指令相当接近。因此,您可能会发现可以将语法 "tree" 表示为单个扁平化列表。
我们在学校学习了 ARC 汇编语言。它在 Miles Murdocca 的 "Principles of Computer Architecture" 书中用于教授计算机体系结构。 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
我想为该语言手写一个解析器,但很难将我关于解析器的基本知识应用到汇编语言中。 例如,我无法掌握汇编程序的 抽象语法树 。
谁能指出解析高级语言和汇编语言或汇编代码的区别?
解析并没有根本的不同。你还有标记、标签、语法等
您可能会发现的主要区别是大多数高级语言支持深层嵌套表达式,这会导致更深层次的语法树(想想嵌套循环、匿名函数等)。
在汇编中,代码的结构通常更像是一个简单的指令列表,深一层,与底层机器指令相当接近。因此,您可能会发现可以将语法 "tree" 表示为单个扁平化列表。