Julia 解释器笔记

                     

贡献者: addis

  • 本文处于草稿阶段。

   本文是关于 Julia 解释器的原理:它使用了哪些技术,可以使得它作为一门动态语言能达到编译语言的性能。

1. 把 Julia 代码编译成 LLVM IR 代码

   首先安装 using Pkg; Pkg.add("LLVM")

using LLVM
function add(x::Int, y::Int)::Int
    return x + y
end
llvm_ir = @code_llvm add(1, 2) # 生成 LLVM IR
生成的代码如下
;  @ REPL[3]:1 within `add'
define i64 @julia_add_652(i64 signext %0, i64 signext %1) {
top:
;  @ REPL[3]:2 within `add'
; ┌ @ int.jl:87 within `+'
   %2 = add i64 %1, %0
; └
  ret i64 %2
}
所以上面参数 (1,2) 的作用是提供自变量的类型。


致读者: 小时百科一直以来坚持所有内容免费,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 10 元,我们一个星期内就能脱离亏损, 并保证在接下来的一整年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利