Skip to content

Biblioteca Padrão - #17

Merged
leonelsanchesdasilva merged 5 commits into
principalfrom
lib-padrao
Dec 14, 2025
Merged

Biblioteca Padrão#17
leonelsanchesdasilva merged 5 commits into
principalfrom
lib-padrao

Conversation

@ItaloCobains

Copy link
Copy Markdown
Collaborator

O que muda

Esta PR adiciona uma biblioteca padrão escrita em C, que passa a ser usada pelo compilador durante o processo de linkagem.

Para utilizá-la, basta compilá-la e gerar um arquivo objeto (.o). No momento da compilação do IR, esse objeto é linkado junto ao código gerado.


Motivação

Antes dessa mudança:
• As funções da libc precisavam ser declaradas manualmente como globais no IR.
• A lógica de funções como leia ficava dentro da classe de compilação, chamando diretamente puts, scanf, etc.
• Isso acoplava a geração de IR a detalhes da libc e tornava o código mais difícil de manter.


Como funciona agora

• As funções padrão (leia, escreva, etc.) passam a ser implementadas em C.
• No IR, leia e escreva são apenas chamadas via CreateCall, sem lógica adicional no compilador.
• O compilador apenas declara essas funções no módulo e delega a execução à biblioteca padrão.

Exemplo: leia agora é simplesmente um CreateCall para uma função definida em C.


Benefícios adicionais

• Facilita a implementação de funções padrão que não possuem uma declaração fixa, como numero() e inteiro().
• Essas funções são carregadas no módulo e injetadas na pilha logo no início.
• Quando ocorre uma Expressão de Chamada, o próprio CreateCall já executa a função correta, sem tratamento especial no compilador.

@ItaloCobains ItaloCobains self-assigned this Dec 14, 2025
@ItaloCobains ItaloCobains added the enhancement New feature or request label Dec 14, 2025

@leonelsanchesdasilva leonelsanchesdasilva left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado!

@leonelsanchesdasilva
leonelsanchesdasilva merged commit fb47f59 into principal Dec 14, 2025
2 checks passed
@leonelsanchesdasilva
leonelsanchesdasilva deleted the lib-padrao branch December 14, 2025 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants