[FUG-BR] [Off-Toppic] GCC

Ricardo Nabinger Sanchez rnsanchez em gmail.com
Quarta Janeiro 2 10:01:34 BRST 2008


On Wed, 2 Jan 2008 00:23:21 -0200
"Joao Rocha Braga Filho" <goffredo em gmail.com> wrote:

> Alguém já olhou a geração de código de um gcc atual?

Sim.

> 
> Com a opção -O3, se uma função for "static" e só é chamada uma
> vez, ele some com ela introduzindo o código no local de chamada.

static em funções diz ao compilador que ela é local àquela unidade de
compilação (.o), e portanto o símbolo gerado não será visível.  Sendo
assim, não tem porque o compilador criar uma entrada para ele na .symtab
se ninguém vai usar.  Em outras palavras, isto está OK.  :)

> 
> E tem mais. Uma printf para só imprimir uma string é trocada por
> uma puts, e com passagem de parâmetros por registradores, e não
> por pilha. Ele faz isto em muitas outras coisas. Eu já tinha ficado
> meio assombrado com o que ele fazia a alguns anos atrás, mas o
> pessoal ainda deu mais um capricho agora.

Esse e mais um monte de truques.

> 
> Eu descobri isto parando o compilador a etapa do assembler, com
> a opção -S. Estou usando a versão AMD64.

Tem uma outra onde tu pode ver a saída de cada estágio, inclusive os de
otimização.  Gera um montão de arquivos, alguns que não tem como
entender sem conhecer a estrutura interna do GCC, mas interessantes
mesmo assim.


-- 
Ricardo Nabinger Sanchez                   rnsanchez em gmail.com
Powered by FreeBSD                  http://rnsanchez.wait4.org

  "Left to themselves, things tend to go from bad to worse."


Mais detalhes sobre a lista de discussão freebsd