Aula 05: Expressões Regulares e Scanners

Data de Publicação

25/03/2026

Data de Modificação

08/03/2026

Objetivos

  • Introduzir o WebAssembly como alvo de compilação.
  • A arquitetura de pilha do Wasm.

Motivação

Para Engenharia de Computação, o WebAssembly é interessante não só por rodar no navegador, mas porque:

  • Define um alvo de compilação padronizado e seguro, com um modelo de execução claro.
  • Inspira o design de outras VMs baseadas em pilha e de runtimes portáveis.
  • Conecta compiladores tradicionais (C/C++, Rust, Go) com ambientes web e sandboxed.

Conteúdo

WebAssembly (Wasm) é um formato binário de instruções para uma máquina de pilha, pensada para execução segura no navegador e em outros runtimes. Compiladores de C++, Rust, Go e muitas outras linguagens podem gerar Wasm como alvo, permitindo desempenho próximo ao nativo na web.

flowchart LR
  Fonte[C/Rust/Go] --> Comp[Compilador]
  Comp --> Wasm[Wasm]
  Wasm --> Runtime[Runtime navegador]
  Runtime --> Exec[Execução]

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 sandboxing: o código não acessa memória fora do seu linear memory; não há acesso direto ao DOM ou ao sistema de arquivos exceto via APIs do host. Isso reduz riscos de buffer overflow e ataques.

Resumo

  • Wasm: máquina de pilha, memória linear, tipagem explícita (i32, i64, f32, f64). Compiladores geram Wasm como um alvo; runtimes (navegador, Node, Wasmtime) executam o binário de forma segura e rápida.

Referências

  • Aho et al. (2006); Cooper & Torczon (2011). Especificação: webassembly.org.

Materiais da aula

Última atualização: 08/03/2026

De volta ao topo