已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。
10天前关闭。
Improve this question
我用Python编写了自己的高级ASM语言。
可以引导我的ASM语言吗?如果是,是否有任何有用的文档描述如何一步一步地做到这一点?
这是一个循环的片段:
# comment
_data:
set x0 0
end
_main:
prt 'Start'
jmp asd
prt 'Middle'
lbl asd
prt 'End'
jmp loop
ext
end
# loop 0..9
loop:
jmp loop_init
lbl loop_start
prt x0
inc x0
lbl loop_init
ieq x0 10
jmt loop_end
jmf loop_start
lbl loop_end
ext
end
1条答案
按热度按时间u7up0aaq1#
要进行引导,请使用新语言编写一个实现。
典型步骤/阶段见en.wikipedia.org/wiki/Bootstrapping_(compilers)。另见“为新编程语言开发编译器,首先在现有语言中开发,然后用新语言重写并自行编译,是 Bootstrap 概念的另一个例子。
拥有一个可用的Python版本可以作为需要实现的指南-将Python的每一行翻译成您的语言。
任何现有语言(从汇编到Python到C#)的工作实现对于通过阶段1也非常有帮助。例如,在第一阶段,您可以通过Python版本运行新的语言源代码实现,然后生成一个可执行文件(大概),您可以使用它进行自编译。
在第一阶段的版本上工作时,通过避免使用新语言中的复杂功能,事情可以更快地进行。对于汇编程序来说,这可能意味着不使用宏或模板,记录/结构,或者不依赖于更复杂的错误检测/消息传递,如果支持函数签名等功能,您可能会有。
你基本上是在用汇编语言写汇编程序。你需要像解析器,助记符查找/翻译,符号表,机器代码生成,修正(或两遍)这样的功能-类似于你在Python中已经拥有的功能,但Python使字典和其他数据结构易于使用。
通常,引导是朝着新的方向进行的,比现有的语言更高级,例如,当他们用C++编写编译器时,C#最终将其翻译为C#。你走的是另一个方向,不过这应该是一个很好的学习练习。