Şimdi Ara

c de artırma azaltma operatörü hakkında (2. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
24
Cevap
1
Favori
3.687
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 12
Sayfaya Git
Git
Giriş
Mesaj
  •  
    movl $11, %esi
    movl $.LC0, %edi
    xorl %eax, %eax
    call printf
    movl $132, %esi
    movl $.LC1, %edi
    xorl %eax, %eax
    call printf


    Linux ortamında gcc çıktısı. Visual studio dan akıllı olduğu kesin.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 1 Aralık 2014; 20:07:56 >
  • Windows altında gcc..:

    C kodu..:
     
    #include <stdio.h>

    int main()
    {
    int a = 11, x;
    x = ++a * a--;

    return 0;
    }


    asm kodu (gcc) ..: -O2
     
    pushl %ebp
    movl $16, %eax
    movl %esp, %ebp
    subl $8, %esp
    andl $-16, %esp
    call __alloca
    call ___main
    leave
    xorl %eax, %eax
    ret


    garip geldi hiç bişey anlamadım herhade .s



    < Bu mesaj bu kişi tarafından değiştirildi lavara123 -- 1 Aralık 2014; 23:08:30 >
    < Bu ileti mini sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: elektro_gadget

     
    movl $11, %esi
    movl $.LC0, %edi
    xorl %eax, %eax
    call printf
    movl $132, %esi
    movl $.LC1, %edi
    xorl %eax, %eax
    call printf


    Linux ortamında gcc çıktısı. Visual studio dan akıllı olduğu kesin.

    Kullandığın optimizasyon seviyesine bağlı, -O0 ile derlersen aynı çıktıyı verir muhtemelen, ne alakası var?
    MSVC'de de optimizasyonu /Ox yaparsan muhtemelen benzer çıktı verecektir.
  • call main den öncesi startup kodu zaten. printf leri sildiğin için main e girip çıkıyor sadece. dead code elimination denen optimizasyon söz konusu.

    @Fatih513
    Belki de öyledir. Msvc ile deneme şansım yok.
  • 
Sayfa: önceki 12
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.