- 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:

- Intel FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)
- Windows phone 7.5 application development with F#
- Linux KVM虛擬化架構(gòu)實(shí)戰(zhàn)指南
- 硬件產(chǎn)品經(jīng)理成長(zhǎng)手記(全彩)
- INSTANT ForgedUI Starter
- Artificial Intelligence Business:How you can profit from AI
- 分布式微服務(wù)架構(gòu):原理與實(shí)戰(zhàn)
- OUYA Game Development by Example
- 單片機(jī)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)教程
- 計(jì)算機(jī)組裝維修與外設(shè)配置(高等職業(yè)院校教改示范教材·計(jì)算機(jī)系列)
- 電腦高級(jí)維修及故障排除實(shí)戰(zhàn)
- Source SDK Game Development Essentials
- FL Studio Cookbook
- 單片機(jī)項(xiàng)目設(shè)計(jì)教程
- The Deep Learning with PyTorch Workshop