2.1.5 Go语言编译器简介中国 上海 / 2020-11.21-22 Go语言编译器简介 ’ alt=‘OCR图片’/> 关于我 Contributors to golang/go · GitHub 给Go编译器提交过127个补丁,累计六万余行; 拥有Go官方git仓库提交权限; 全球贡献者排名长期处于前50名; 世界上90%的gopher都用过我写的代码; 编译器的重要性 只有1%的程序员懂汇编语言 汇编语言无法构建大型系统 汇编语言无法构建大型系统 操作系统内核也需要编译器才能运行起来 编译理论是图灵奖大户,仅次于计算复杂度理论 操作系统有后门,编译器的后门更致命 编译器的难题:任务爆炸 N种语言 * M种机器 = N*M 个任务 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 两个方案 $$ N \mathrm {种 语 言} + M \mathrm {种 机 器} = 通用(非专用)编译器的方案 AST = Abstract Syntax Tree抽象语法树 SSA = Single Static Assignment单静态赋值 IR = Intermediate Representation中间表示 优点: 减少任务; 代码复用; GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 相关理论成熟高效; LLVM的三阶段结构0 码力 | 36 页 | 1.63 MB | 3 月前3
LLVM's Realtime Safety Revolution: Tools for Modern Mission Critical Systems## +24 ## LLVM's Realtime Safety Revolution: Tools for Modern Mission Critical Systems DAVID TREVELYAN & CHRISTOPHER APPLE ## Chris Apple ## David Trevelyan • 10-year veteran of the audio industry safety build:mac unit:mac rtsan build:win unit:mac:arm build:linux unit:win unit:linux ## LLVM 20  WE'RE HERE (is_in_realtime_context(): print_stack_and_die("malloc"); return REAL(malloc)(size); } LLVM Intermediate Representation (IR) ## Real-time context signaling compilation step int dispatch()0 码力 | 153 页 | 1.38 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索## RUST CHINA CONF 2023 第三届中国Rust开发者大会 6.17-6.18 @Shanghai ## KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 ## 😍 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 ## 01 KusionStack 与 KCL ## KusionStack是什么 fb8525138fc88bca0/p9_2.jpg) ## 2 KCL 编译器架构升级 Python 代码翻译 Source Code Python code 栈式虚拟机 Source Code AST Bit code VM Rust 编译器 Source Code AST LLVM IR Native/WASM ## R ## 我们遇到了哪些问题? ## G 为什么选择 Rust? ### 1. Go, Python, Rust 性能对比 ||CPython|RustPython|GPython|VM(go)|VM(Rust)|VM(Python)|LLVM Native Code| |---|---|---|---|---|---|---|---| |简单Case a = 1|0.05s|0.125s|0.012s|0.01s|0.008s|0.6s|00 码力 | 25 页 | 3.50 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化## AMD # 从汇编角度看编译器优化 by 彭于斌 (@archibate) 往期录播:https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码:https://github.com/parallel101/course 的压力。 • 因此 64 位比 32 位机器相比,除了内存突破 4GB 限制外,也有一定性能优势。 # 8 位,16 位,32 位,64 位版本 al0 码力 | 108 页 | 9.47 MB | 2 年前3
5.cgo 原理解析及优化实践十余年网关研发 • OpenResty 老司机(NGINX + LuaJIT) • MOSN 核心成员 • Envoy Golang extension maintainer - 玩过 DSL 编译器 • 对 LuaJIT、Go 有一些研究  数据交互 ✓ 对 PC 寄存器的修改 ③ 抽象模型 ✓ 编译器完成地址指引 ✓ 函数调用规约 ✓ Go 1.17 ✓ 数据结构/类型 ✓ 内存对象生命周期 √ GMP ## cgo 编译的两个阶段 ① cgo 预编译 ✓ 生成 wrapper 代码 ✓ 屏蔽 GMP 模型 ② 常规编译 ✓ 底层调用 C 编译器 ✓ 链接器通过符号寻址 ## cgo 预编译 - C 调用0 码力 | 45 页 | 5.74 MB | 2 年前3
Julia 1.8.3 DocumentationAlgorithms 973 53.4 Alternate orderings 975 54 Iteration utilities 977 55 C Interface 988 56 LLVM Interface 1000 57 C Standard Library 1001 58 StackTraces 1004 59 SIMD Support 1006 III Standard isbits Union Optimizations ..... 1460 101.13 System Image Building ..... 1461 101.14 Working with LLVM ..... 1463 101.15 printf() and stdio in the Julia runtime ..... 1469 101.16 Bounds checking . good performance, achieved using type inference and just-in-time (JIT) compilation, implemented using LLVM. It is multi-paradigm, combining features of imperative, functional, and object-oriented programming0 码力 | 1565 页 | 5.04 MB | 2 年前3
Julia 1.6.3 Documentation841 54.4 Alternate orderings 842 55 Iteration utilities 844 56 C Interface 853 57 LLVM Interface 864 58 C Standard Library 865 59 StackTraces 868 60 SIMD Support 870 isbits Union Optimizations ..... 1256 98.13 System Image Building ..... 1257 98.14 Working with LLVM ..... 1259 98.15 printf() and stdio in the Julia runtime ..... 1265 98.16 Bounds checking ... good performance, achieved using type inference and just-in-time (JIT) compilation, implemented using LLVM. It is multi-paradigm, combining features of imperative, functional, and object-oriented programming0 码力 | 1325 页 | 4.54 MB | 2 年前3
Julia 1.6.7 DocumentationAlternate orderings ..... 841 54 Iteration utilities ..... 843 55 C Interface ..... 852 56 LLVM Interface ..... 863 57 C Standard Library ..... 864 58 StackTraces ..... 867 59 SIMD isbits Union Optimizations ..... 1255 97.13 System Image Building ..... 1256 97.14 Working with LLVM ..... 1258 97.15 printf() and stdio in the Julia runtime ..... 1264 97.16 Bounds checking ... good performance, achieved using type inference and just-in-time (JIT) compilation, implemented using LLVM. It is multi-paradigm, combining features of imperative, functional, and object-oriented programming0 码力 | 1324 页 | 4.54 MB | 2 年前3
WebAssembly 简介 - 陈思衡@Shanghai WebAssembly 介绍 ## WebAssembly 简介 WebAssembly(简称 Wasm)是一种新的编译目标,帮助在 web 中运行高性能应用。它是一种低级语言,设计为编译器目标,以在 web 浏览器中高效运行。 ## WebAssembly 简介 ## #高性能 WebAssembly 代码可以以接近原生的速度运行,且具有很小的二进制大小和快速加载速度。 ## # Mozilla、Google、Microsoft 等主要浏览器供应商共同设计。它现已在所有主流浏览器中实现,包括 Chrome、Firefox、Safari 和 Edge。 ## # 多语言支持 现在多种语言都有编译器支持 WebAssembly,如 C/C++、Rust、Go、Zig 等。 ## WebAssembly 简介 ## WebAssembly 机制 ## memory Wasm 的 memory ); println("[wasm] exit"); } Async Wasm 解决方案 ## 基于 Asyncify(Binaryen) Binaryen 是一个编译器基础架构库,提供了一套用于处理 WebAssembly 的工具。其中一个功能是 asyncify,它允许将同步的 WebAssembly 代码转换为异步代码。就像 rust 对 async function0 码力 | 24 页 | 773.46 KB | 2 年前3
Julia v1.1.1 DocumentationJULIA_GC_NO_GENERATIONAL ..... 335 JULIA_GC_WAIT_FOR_DEBUGGER ..... 335 ENABLE_JITPROFILING ..... 335 JULIA_LLVM_ARGS ..... 335 JULIA_DEBUG_LOADING ..... 335 7 Embedding Julia ..... 337 37.1 High-Level Embedding Sorting Algorithms ..... 792 63 Iteration utilities ..... 795 64 C Interface ..... 801 65 LLVM Interface ..... 809 66 C Standard Library ..... 811 67 StackTraces ..... 815 68 SIMD Working with LLVM ..... 1163 Overview of Julia to LLVM Interface ..... 1163 Building Julia with a different version of LLVM ..... 1164 Passing options to LLVM ..... 1164 Debugging LLVM transformations0 码力 | 1216 页 | 4.21 MB | 2 年前3
共 749 条
- 1
- 2
- 3
- 4
- 5
- 6
- 75
相关搜索词
Go编译器编译器工作流程ARM64硬件除法器词法分析RealtimeSanitizerLLVMPerformance constraintsMission critical systemsDavid Trevelyan & Christopher AppleKCLRustKusionStack编译器LLVM IR编译器优化restrictconstexpr汇编内联cgoGo语言LLVM编译器内存生命周期栈空间分配JuliaJIT编译性能REPLmultiple dispatchdocstringssegfaultssystem imageWebAssemblyWASIAsyncifyBinaryenJIT compilation













