我想学习LLVM。我想尝试使用以下食谱风格语言:
Ingredients:
x-unit Flour
y-unit Yeast
z-unit Water
a-unit Sugar
Instructions:
bowl = mix flour with yeast for 30 seconds
bowl = mix bowl with sugar for 25 seconds
bowl = mix bowl with water for 1 minute
heat bowl for 3 hours
dough = split bowl into 3 parts
heat dough[n] at 450 f for 1 hour
由于它是一种学习经历,我不确定LLVM是否能够处理时间/体积是可以计算的维度的语言。在阅读了一些文档之后,我并不完全确定这是否是我想要做的正确工具。
我想学习这门语言,编译它,并将其转换为有效的C / Python代码,这样我就可以使用RPi或Arduino来执行程序。基本上我想尝试通过用这种语言表达它们来自动化基本食谱,并从中运行一个小厨房。
以不同的方式提出问题:LLVM如何处理特定时间的指令。那么我将如何在LLVM IR中表达指令mix flour with yeast for 30 seconds
?
答案 0 :(得分:0)
我不确定LLVM是否能够处理时间/体积是可以计算的维度的语言。
一般情况下,您可以在LLVM中执行任何可以在C中执行的操作。毕竟clang将C编译为LLVM。
我想学习这门语言,编译它,并将其转换为有效的C / Python代码
如果你想生成C和/或Python,那就这样做吧。如果目标是机器代码/程序集,则通过LLVM。 LLVM无法帮助您生成C代码或Python代码。
LLVM如何处理特定于时间的指令
您只需调用相应的操作系统或libc函数(或嵌入式平台上的等效函数) - 就像在C中一样。例如,要在POSIX系统上等待30秒,您将调用{{1 }}:
sleep
您还必须为该函数生成声明:
call i32 (i32) @sleep(i32 30)
所以基本上你在手写的C程序中完成同样的事情,除了LLVM的函数调用语法和声明而不是C语言。