- Hands-On Game Development with WebAssembly
- Rick Battagline
- 345字
- 2021-06-24 13:41:00
A brief introduction to LLVM
Emscripten is the tool we will be using to compile C++ into WebAssembly. Before I discuss Emscripten, I need to explain a technology called LLVM and its relationship to Emscripten.
First, take a moment to think of airlines (stay with me here). Airlines want to get passengers from one airport to another airport. But it's challenging to offer a direct flight from every single airport to every other airport on Earth. That would mean that airlines would have to provide a vast number of direct flights, such as Akron, Ohio to Mumbai, India. Let's travel back in time to the 1990s—that was the state of the compiler world. If you wanted to compile from C++ to ARM, you needed a compiler capable of compiling C++ to ARM. If you needed to compile from Pascal to x86, you needed a compiler that could compile from Pascal to x86. These are like having only direct flights between any two cities: a compiler for every combination of language and hardware. The result is either that you have to limit the number of languages you write compilers for, limit the number of platforms you can support with that language, or more likely, both.
In 2003, a student at the University of Illinois named Chris Lattner wondered, "What if we created a hub-and-spoke model for programming languages?" His idea led to LLVM, which originally stood for "Low-Level Virtual Machine." The idea was that, instead of compiling your source code for any possible distribution, you compile it for LLVM. There are then compilers between the intermediate language and your final output language. In theory, this means that if you develop a new target platform on the right side of the following diagram, you get all languages on the left side right away:

- Learning Cocos2d-x Game Development
- Raspberry Pi 3 Cookbook for Python Programmers
- BeagleBone By Example
- Linux運維之道(第2版)
- 硬件產品經理成長手記(全彩)
- 電腦常見故障現場處理
- 基于ARM的嵌入式系統和物聯網開發
- Manage Partitions with GParted How-to
- scikit-learn:Machine Learning Simplified
- Mastering Adobe Photoshop Elements
- 計算機組裝與維護(第3版)
- 微軟互聯網信息服務(IIS)最佳實踐 (微軟技術開發者叢書)
- Practical Machine Learning with R
- Rapid BeagleBoard Prototyping with MATLAB and Simulink
- Arduino BLINK Blueprints