千家信息网

tinygo编译的原理是什么

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"tinygo编译的原理是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"tinygo编译的原理是什么"吧!说明tinygo本身是
千家信息网最后更新 2025年02月23日tinygo编译的原理是什么

这篇文章主要讲解了"tinygo编译的原理是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"tinygo编译的原理是什么"吧!

说明

tinygo本身是个针对微控制器的编译器+工具,可以build、flush。

tinygo依赖自己的go-llvm

tinygo的实现中依赖的自己的go-llvm,其实就是llvm的一个go的binding,最终依赖系统的llvm

通过go-llvm/llvm实现了一个基本的编译器

tinygo基于go的编译器,通过go-llvm/llvm实现了一个基本的编译器,所以支持的语法、特性主要和go类似

例如 channel的发送:

compiler/channel.go

37  c.createRuntimeCall("chanSend", []llvm.Value{coroutine, ch, valueAllocaCast, valueSize}, "")3839      // End the lifetime of the alloca.

src/runtime/chan.go

44 // chanSend sends a single value over the channel. If this operation can45 // complete immediately (there is a goroutine waiting for a value), it sends the46 // value and re-activates both goroutines. If not, it sets itself as waiting on47 // a value.48 func chanSend(sender *coroutine, ch *channel, value unsafe.Pointer, size uintptr) {

感谢各位的阅读,以上就是"tinygo编译的原理是什么"的内容了,经过本文的学习后,相信大家对tinygo编译的原理是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0