CompiladoresVisão geral
Ambientes de Execução
Um ambiente de execução é o mapa da memória enquanto o programa corre: cada objeto — instrução, global, local ou bloco pedido em execução — ocupa uma região com tempo de vida próprio.
Quadros de ativação, convenção de chamada e fatiamento do heap neste tópico — e a emissão na máquina alvo no tópico seguinte — partem desse mapa.
As páginas se agrupam em quatro blocos. O primeiro parte o espaço de endereços em código, dados, BSS, pilha e heap, e escolhe a política: estática, automática na pilha, ou explícita no heap.
O segundo preenche um quadro de ativação: endereço de retorno, enlaces, parâmetros, locais e registradores salvos, empilhados em ordem LIFO.
O terceiro executa o contrato da chamada: parâmetros da direita para a esquerda na convenção cdecl, quem preserva cada registrador, e o percurso da cadeia estática em funções aninhadas.
O quarto fatia o heap: reserva e libera blocos fora da ordem LIFO, por pareamento malloc/free ou por coleta de lixo.
Onde o heap fica no espaço e por que o bloco sobrevive ao retorno está em Organização da Memória. Como o heap é cortado e devolvido está em Gerenciamento de Heap.
A pilha como região que cresce contra o heap está em Organização da Memória. Os campos de um quadro e a invariante LIFO das ativações estão em Registros de Ativação.
Passagem por valor ou por referência e o elenco dos campos estão em Registros de Ativação. A ordem cdecl na pilha e quem preserva cada registrador estão em Chamadas de Procedimentos.
O enlace estático como campo do quadro está em Registros de Ativação. Percorrer a cadeia até o escopo léxico exterior está em Chamadas de Procedimentos.
Páginas deste tópico
Organização da Memória
ProMédia incidência no POSCOMP8 min de leitura · 16ª mais cobrada em Compiladores
Código, dados, BSS, pilha e heap; alocação estática vs dinâmica.
Registros de Ativação
ProAlta incidência no POSCOMP7 min de leitura · 10ª mais cobrada em Compiladores
Campos do RA; pilha LIFO; passagem por valor vs referência.
Chamadas de Procedimentos
ProBaixa incidência no POSCOMP8 min de leitura · 23ª mais cobrada em Compiladores
Convenção cdecl; caller/callee-save; cadeia estática. Campos do RA só por link.
Gerenciamento de Heap
ProBaixa incidência no POSCOMP8 min de leitura · 25ª mais cobrada em Compiladores
Blocos dinâmicos vs pilha LIFO; malloc/free vs coleta de lixo.