Hlavní navigace

GCC Explorer: interaktivní kompilace

Sdílet

Adam Štrauch 28. 5. 2012

Matt Godbolt na svém blogu představil jeho nový nástroj pro analýzu výstupu GCC kompilátoru. Jde o webovou aplikaci, kde do levé části píšete svůj C/C++ kód a v druhé části vidíte co vyleze z GCC. Kompilátoru můžete dávat různé parametry a dokonce si i vybrat verzi. Lepší představu si uděláte z demo ukázky na gcc.godbolt.org.

Našli jste v článku chybu?
  • Aktualita je stará, nové názory již nelze přidávat.
  • 5. 6. 2012 22:21

    _dworkin (neregistrovaný) ---.cust.nbox.cz


    int test1( char * buffer ) {
    int i = 0;
    while ( buffer[i] != '\n' ) i++;
    return i;
    }

    int test2( char * buffer ) {
    int i = -1;
    while ( buffer[++i] != '\n' ) ;
    return i;
    }

    -O2 -fomit-frame-pointer -fno-stack-protector

    clang 3.0


    test1(char*): # @test1(char*)
    .Ltmp28:
    xorl %eax, %eax
    cmpb $10, (%rdi)
    je .LBB5_3
    xorl %eax, %eax
    .LBB5_2: # %.lr.ph
    cmpb $10, 1(%rdi,%rax)
    leaq 1(%rax), %rax
    jne .LBB5_2
    .LBB5_3: # %._crit_edge
    ret

    test2(char*): # @test2(char*)
    .Ltmp31:
    xorl %eax, %eax
    .LBB6_1: # =>This Inner Loop Header: Depth=1
    cmpb $10, (%rdi,%rax)
    leaq 1(%rax), %rax
    jne .LBB6_1
    decl %eax
    ret

    g++ 4.7


    test1(char*):
    .LFB36:
    cmpb $10, (%rdi)
    je .L26
    addq $1, %rdi
    xorl %eax, %eax
    .L25:
    addq $1, %rdi
    addl $1, %eax
    cmpb $10, -1(%rdi)
    jne .L25
    rep
    ret
    .L26:
    xorl %eax, %eax
    ret
    .LFE36:

    test2(char*):
    .LFB37:
    xorl %edx, %edx
    .L29:
    movl %edx, %eax
    addq $1, %rdx
    cmpb $10, -1(%rdi,%rdx)
    jne .L29
    rep
    ret
    .LFE37: