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