1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[duvida] Gcc e Xcode

Discussão em 'Apple Geral' iniciada por Fork, 10 de Outubro de 2006. (Respostas: 13; Visualizações: 904)

  1. Fork

    Fork What is folding?

    Boas,

    tenho o Xcode ou (Xtools) 2.4 instalado. O que aconteçe é o seguinte, eu crio um ficheiro em C, no smultron (nao ando envolvido em mega projectos), e necessito de analizar o codigo assembly
    , o que me aconteçe é que apos correr o comando para tal efeito, o codigo assembly é muito confuso mesmo.

    Código:
    .stabd    46,0,0
        .stabd    68,0,3
        pushl    %ebp
        movl    %esp, %ebp
        pushl    %ebx
        call    ___i686.get_pc_thunk.bx
    "L00000000001$pb":
        .stabd    68,0,4
        movl    L_accum$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
        movl    $0, (%eax)
        .stabd    68,0,5
        movl    L_j$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
        movl    $0, (%eax)
        movl    $0, %edx
        leal    _vec-"L00000000001$pb"(%ebx), %eax
        leal    20+_vec-"L00000000001$pb"(%ebx), %ecx
    L2:
        addl    (%eax), %edx
        addl    $4, %eax
        cmpl    %ecx, %eax
        jne    L2
        movl    L_j$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
        movl    $5, (%eax)
        movl    L_accum$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
        movl    %edx, (%eax)
        .stabd    68,0,6
    
    
    Ora eu vejo colegas meus a fazer o mesmo procedimento e o assemly é muito, mas muito mais simples.

    Há soluçao?
     
  2. iStarTAC

    iStarTAC Power Member

    Um tiro as cegas:
    - Terás uma optimização de código muito alta? Tenta ver se é isso. (Não me perguntes como)
    - O teu Mac é PowerPC ou Intel? Será isso a razão do código estar diferente?
     
  3. Fork

    Fork What is folding?

    Intel.

    Nao dou qq grau de optimizaçao

    Tu tens um intel mac? Podes testar com o teu um programa qq?
     
  4. jaac

    jaac Power Member

    Como estás a ver o assembly?
     
  5. Fork

    Fork What is folding?

    depois de ompilar o *.c atraves de gcc -S *.c

    abro o ficheiro .s com um editor de texto
     
  6. Fork

    Fork What is folding?

    Nao sei se é relevante, mas tenho o GCC que vinha com o xTools, 4.0 (julgo)
     
  7. ajax

    ajax Banido

    Não estou a ver nada de complicado no assembly. O que é para tí uma coisa complicada?

    Mete aqui a source do .c para compilarmos em outros computadores.
     
  8. jaac

    jaac Power Member

    Experimenta

    Código:
    gcc -S -O0 <ficheiro>
    Em ppc não funciona, mas para intel deve dar:
    Código:
    gcc -masm=intel -S <ficheiro>
    Em ultimo caso instala o objdump
     
  9. Fork

    Fork What is folding?

    @ Ajax

    o que acho complicado é estas linhas

    Código:
     movl L_accum$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
    que em outros pcs (linux) ficam assim.

    Código:
     movl accum, %eax
    Qual achas mais legivel?

    Obrigado jaac vou tentar
     
  10. Fork

    Fork What is folding?

    Jaac:
    Código:
    prog.c:1: error: bad value (intel) for -masm= switch
    O que ando a fazer é depuraçao de assembly na aula de arquitecturas, nao que este assembly é imperceptivel, mas é muito mas muito mais dificil de ler/compreender/alterar.

    Se o assembly é normal ficar assim nos macs tasse bem.

    Apenas pensei que ia ficar como fica em linux, que ja usei noutras alturas.

    De qq das maneiras fica a qui o source pra quem quiser tentar

    Já agora p que é "non_lazy_ptr"?? isto desaparecendo e ja ficava melhor

    Código:
    int vec[5]={-10,20,10,5,-15};
    int j, accum;
    int main(){
            accum=0;
            for(j=0;j<5;j++) accum+=vec[j];
            }
     
  11. ajax

    ajax Banido

    Isso é apenas um nome diferente para a mesma coisa. Nesse caso um apontador para a variável ou se quiseres, um "endereço" de memória onde está guardada a variável. É natural que de sistema para sistema possam haver diferenças.

    Penso que pode haver uma forma de resolver esse problema simplificando o output. A ver se me lembro.
     
  12. Fork

    Fork What is folding?

    pois tb me pareceu que andava la com apontadores, se houver maneira de "renomear" aquilo por favor diz-me, sei que é a mesma coisa mas era pra ficar mais readable
     
  13. Fork

    Fork What is folding?

  14. Simao

    Simao Power Member

    experimenta usar o objdump
     

Partilhar esta Página