您好,登錄后才能下訂單哦!
這篇文章主要講解了“tinygo編譯的原理是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“tinygo編譯的原理是什么”吧!
tinygo本身是個針對微控制器的編譯器+工具,可以build、flush。
tinygo的實現中依賴的自己的go-llvm,其實就是llvm的一個go的binding,最終依賴系統的llvm
tinygo基于go的編譯器,通過go-llvm/llvm實現了一個基本的編譯器,所以支持的語法、特性主要和go類似
例如 channel的發送:
compiler/channel.go
37 c.createRuntimeCall("chanSend", []llvm.Value{coroutine, ch, valueAllocaCast, valueSize}, "") 38 39 // End the lifetime of the alloca.
src/runtime/chan.go
44 // chanSend sends a single value over the channel. If this operation can 45 // complete immediately (there is a goroutine waiting for a value), it sends the 46 // value and re-activates both goroutines. If not, it sets itself as waiting on 47 // a value. 48 func chanSend(sender *coroutine, ch *channel, value unsafe.Pointer, size uintptr) {
感謝各位的閱讀,以上就是“tinygo編譯的原理是什么”的內容了,經過本文的學習后,相信大家對tinygo編譯的原理是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。