【发布时间】:2016-01-14 09:28:51
【问题描述】:
我一直在为 LLVM 编写一种玩具语言。我想要实现的最雄心勃勃的功能是纤维。我已经阅读了很多关于此事的内容,并且我认为我对它们的传统实现方式有一个模糊的概念。据我所知,纤维通常被建模为指令指针和堆栈。 (参见:Golang 运行时)
是否有任何 LLVM 支持异步执行,具有不同的指令指针?多个堆栈?
我知道 LLVM 是一个寄存器机器,有什么办法可以确保所有相关数据都保存在堆栈上?和/或保存和恢复当前寄存器状态的方法?
手动实现这将是一个真正的害虫,所以任何帮助表示感谢!
【问题讨论】:
-
关于保存/恢复寄存器状态的问题是一个有趣的问题。不过,它可能值得提出自己的问题。
标签: asynchronous llvm coroutine fiber