在学校,我们学习了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
我想亲自为该语言编写解析器,但很难将解析器的基本知识应用于汇编语言。 例如,我无法绕过汇编程序的抽象语法树。
有人能指出解析高级语言和汇编语言或汇编代码的差异吗?
答案 0 :(得分:3)
解析并没有根本不同。你仍然有令牌,标签,语法等。
您可能会发现的主要区别是大多数高级语言都支持深层嵌套表达式,这会导致更深层次的语法树(想想嵌套循环,匿名函数等)。
在汇编中,代码通常更像是一个简单的指令列表,深度一级,与底层机器指令的关系非常接近。因此,您可能会发现可以将语法“tree”表示为单个展平列表。