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.
Back to top