On Wed, 2 Jan 2008 00:23:21 -0200
"Joao Rocha Braga Filho" <[EMAIL PROTECTED]> 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                   [EMAIL PROTECTED]
Powered by FreeBSD                  http://rnsanchez.wait4.org

  "Left to themselves, things tend to go from bad to worse."
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Responder a