Aula 05: Expressões Regulares e Scanners
Objetivos
- Introduzir o WebAssembly como alvo de compilação.
- A arquitetura de pilha do Wasm.
Conteúdo
WebAssembly (Wasm) tornou-se o “Assembly da Web”, permitindo rodar C++, Rust e Go no navegador com performance quase nativa.
A Máquina Wasm
É uma Máquina de Pilha Estruturada. - Não tem registradores gerais expostos. Operações consomem valores da pilha e empilham resultados. - i32.add: Desempilha 2, soma, empilha 1. - Memória Linear: Um grande ArrayBuffer de bytes que o programa acessa via índices (load/store). Ponteiros são apenas inteiros (offset nesse array).
Segurança
Wasm foi desenhado com segurança em mente (Sandboxing). O código Wasm não pode acessar memória fora do seu Array Linear, prevenindo Buffer Overflows que comprometam o Browser.
Referências
- Aho, A. V., Lam, M. S., Sethi, R., & Ullman, J. D. (2006). Compilers: Principles, Techniques, and Tools.
- Cooper, K., & Torczon, L. (2011). Engineering a Compiler.