Assembly Bilmek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pesimistic
    pesimistic's avatar
    Kayıt Tarihi: 05/Eylül/2012
    Erkek

    assembly bilmek ne kazandirir insana soyleyebilirmisiniz ?

    virus vs yazmak icin ideal dil diolar baska ne getirisi olur ki asm nin


    Beyin olanca gücüyle ilerlerken, cinsel sistemlerin korkunç etkinliği daha uykuda olduğu için çocukluk, hayatımız boyunca özlemle geri dönüp baktığımız masumiyet ve mutluluk dönemi, hayatın cennetidir, kayıp cennet. - Arthur Schopenhauer
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    serhat8102
    serhat8102's avatar
    Kayıt Tarihi: 11/Nisan/2010
    Erkek

    - İşlemcinizin gücünü en iyi şekilde ortaya koyabilecek tek programlama dilidir.

    - Cok az yer kapladığı için bilgisayar virüslerin yazımında kullanılırlar.
    - Çok hızlı çalıştıkları için işletim sistemlerinde kernel ve donanım sürücülerinin programlanmasında, hız gerektiren kritik uygulamalarda kullanılmaktadır.
    - Yapısı itibariyle üç boyutlu ekran kartlarında ilgili çizim ve efektlerin işlenmesi amacıyla hem oyunlar hem de programlar içinde ekran kartına hitap eden makina dili kodları kullanılmaktadır.
    - Herhangi bir amaç doğrultusunda (genelde programların daha hızlı çalışması için optimize edilirken), herhangi bir programlama dili altında, o dilin kodları arasında kullanılabilir. Yani diğer dillerle beraber de kullanabilirsiniz. Sizin uzman olduğunuz dil belki Visual Basic dir. Ama işin içinden çıkamadınız, assembly bilen bir arkadaşınız sizin için birkaç kod ekledi ve tamam.
    - İyi öğrenildiğinde diğer dillerde karşılaşılan büyük problemlerin assembly ile basit çözümleri olduğu görülür. Yani başka programlama dillerde çalışan insanların bu iş imkansız dediği yerde assembly devreye girer. Bu üstünlük daima var olacaktır...
    - Yazdığınız programın kaynak kodlarını tüm dünya ile paylaşsanız dahi kodlar o kadar karmaşıktır ki insanlar assembly bilse dahi ne işe yaradığını çözmeleri çok uzun zamanlarını alır. (Açıklayıcı bilgiler koymadı iseniz) Assembly bilmeyen bir insanın kaynak kodu anlaması imkansızdır.
    - Her program derlendiğinde makina diline dönüşür. Bunlar assembly kodlarına dönüştürülebilirler. (Buna disassembly olayı denir, bunu yapan programlar ise disassembler'lar dır.) Bu sayede assembly bilen bir insan zor da olsa diger programların çalışma şekillerini inceleyebilir ve üzerlerinde oynama yapabilir. Bu özellik de başka hiçbir dilde yoktur. Daha ileri gidip programların şifre isteyen bölümleri değişik yöntemlerle kırılabilir. Serial Generator türü programlar bu şekilde yapılabilmektedir.
    - Zaman geçtikce ve insanlar üreten yerine tüketen bilgisayar kullanıcıları haline geldikçe bu dili bilmenin ayrıcalığı artmaktadır.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    baristbt
    baristbt's avatar
    Kayıt Tarihi: 20/Nisan/2011
    Erkek
    serhat8102 bunu yazdı

    - İşlemcinizin gücünü en iyi şekilde ortaya koyabilecek tek programlama dilidir.

    - Cok az yer kapladığı için bilgisayar virüslerin yazımında kullanılırlar.
    - Çok hızlı çalıştıkları için işletim sistemlerinde kernel ve donanım sürücülerinin programlanmasında, hız gerektiren kritik uygulamalarda kullanılmaktadır.
    - Yapısı itibariyle üç boyutlu ekran kartlarında ilgili çizim ve efektlerin işlenmesi amacıyla hem oyunlar hem de programlar içinde ekran kartına hitap eden makina dili kodları kullanılmaktadır.
    - Herhangi bir amaç doğrultusunda (genelde programların daha hızlı çalışması için optimize edilirken), herhangi bir programlama dili altında, o dilin kodları arasında kullanılabilir. Yani diğer dillerle beraber de kullanabilirsiniz. Sizin uzman olduğunuz dil belki Visual Basic dir. Ama işin içinden çıkamadınız, assembly bilen bir arkadaşınız sizin için birkaç kod ekledi ve tamam.
    - İyi öğrenildiğinde diğer dillerde karşılaşılan büyük problemlerin assembly ile basit çözümleri olduğu görülür. Yani başka programlama dillerde çalışan insanların bu iş imkansız dediği yerde assembly devreye girer. Bu üstünlük daima var olacaktır...
    - Yazdığınız programın kaynak kodlarını tüm dünya ile paylaşsanız dahi kodlar o kadar karmaşıktır ki insanlar assembly bilse dahi ne işe yaradığını çözmeleri çok uzun zamanlarını alır. (Açıklayıcı bilgiler koymadı iseniz) Assembly bilmeyen bir insanın kaynak kodu anlaması imkansızdır.
    - Her program derlendiğinde makina diline dönüşür. Bunlar assembly kodlarına dönüştürülebilirler. (Buna disassembly olayı denir, bunu yapan programlar ise disassembler'lar dır.) Bu sayede assembly bilen bir insan zor da olsa diger programların çalışma şekillerini inceleyebilir ve üzerlerinde oynama yapabilir. Bu özellik de başka hiçbir dilde yoktur. Daha ileri gidip programların şifre isteyen bölümleri değişik yöntemlerle kırılabilir. Serial Generator türü programlar bu şekilde yapılabilmektedir.
    - Zaman geçtikce ve insanlar üreten yerine tüketen bilgisayar kullanıcıları haline geldikçe bu dili bilmenin ayrıcalığı artmaktadır.

    - Dilin öğrenilmesi uzun zaman ve emek ister.
    - Yazılan programlar diğer diller göre daha çok satırdan oluşur.
    - Yazdığınız programın hangi satırlarının ne iş yaptığını bir süre sonra anlamayabilirsiniz. Çünkü anlaşılması zor ve karmaşık bir dildir. Bu nedenle kodların sonuna açıklama bölümleri eklemek iyi bir çözüm olacaktır.
    - İşlemciye birebir bağımlıdır. Yani sonraki sayfalarda anlatılacak olan kodlar Intel ve uyumlu (AMD, Cyrix, Via) işlemcilerde geçerlidir. Örneğin Motorola işlemcileri kullanan Macintosh bilgisayarlarda hem komut setinin hem de işlemci mimarisindeki büyük farklılıklardan dolayı geçersizdir. Fakat onlarda da bir makina dili tabii ki bir assembly dili bulunmaktadır. Fakat komutlar daha farklıdır. Bizim ilgi alanımız intel 386 (i386) üstü ve bunlarla uyumlu işlemcilerdir.


    http://www.leyladansonra.com/
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    serhat8102
    serhat8102's avatar
    Kayıt Tarihi: 11/Nisan/2010
    Erkek

    dezavantajşarını yazmadım :D adam getirisini sormuş

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pesimistic
    pesimistic's avatar
    Kayıt Tarihi: 05/Eylül/2012
    Erkek

    yani python da uygulama gelistiorum diyelim

    bir yeri fantezisine asm ile yazabilirim dimi ?


    Beyin olanca gücüyle ilerlerken, cinsel sistemlerin korkunç etkinliği daha uykuda olduğu için çocukluk, hayatımız boyunca özlemle geri dönüp baktığımız masumiyet ve mutluluk dönemi, hayatın cennetidir, kayıp cennet. - Arthur Schopenhauer
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    serhat8102
    serhat8102's avatar
    Kayıt Tarihi: 11/Nisan/2010
    Erkek
    Vkalum bunu yazdı

    yani python da uygulama gelistiorum diyelim

    bir yeri fantezisine asm ile yazabilirim dimi ?

    python bilmiyorum ama muhtemelen oluyordur, çünkü bütün proğramlama dillerinin temeli asm ile oluşturuluyor.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    maserati
    maserati's avatar
    Kayıt Tarihi: 28/Nisan/2006
    Homo

    pc de assembly kullanmak ne kadar mantıklı bilmiyorum

    sen bir windows assemblerde hello word nasıl yazılır araştır öyle karar ver


    Türkiyede kim sevdiği işi yapıyor ki?
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    serhat8102
    serhat8102's avatar
    Kayıt Tarihi: 11/Nisan/2010
    Erkek

    dur yazayım :D

     

    .MODEL Small

    .STACK 100h

    .DATA

       db msg 'Hello, world!$'

    .CODE

    start:

       mov ah, 09h

       lea dx, msg ; or mov dx, offset msg

       int 21h

       mov ax,4C00h

       int 21h

    end start

     

    delphide de şöyle yazılır 

    begin

      Writeln('Hello, world!');

    end.

     

    (gece gece niye bu kadar uğraştıysam)

    serhat8102 tarafından 07/Eki/13 01:15 tarihinde düzenlenmiştir
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    maserati
    maserati's avatar
    Kayıt Tarihi: 28/Nisan/2006
    Homo

    format PE GUI

     

    entry start

     

    section '.code' code readable executable

    start:

    push 0

    push _caption

    push _message

    push 0

    call [MessageBox]

    push 0

    call [ExitProcess]

    section '.data' data readable writeable

    _caption db 'Win32 assembly program',0

    _message db 'Hello, world!',0

    section '.idata' import data readable writeable

    dd 0,0,0,RVA kernel_name,RVA kernel_table

    dd 0,0,0,RVA user_name,RVA user_table

    dd 0,0,0,0,0

    kernel_table:

    ExitProcess dd RVA _ExitProcess

    dd 0

    user_table:

    MessageBox dd RVA _MessageBoxA

    dd 0

    kernel_name db 'KERNEL32.DLL',0

    user_name db 'USER32.DLL',0

     

    _ExitProcess dw 0

    db 'ExitProcess',0

    _MessageBoxA dw 0

    db 'MessageBoxA',0

    section '.reloc' fixups data readable discardable

    (cp)


    Türkiyede kim sevdiği işi yapıyor ki?
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    çok spesifik bir şeylerle uğraşmayacaksan gerek yok hocam. bir de elektronikte yaygın olarak kullanılır. Artık virusler eskisi gibi hasarlar veremiyor. AV lerde olası tehdit barındıan içerikler kolay yakalanabilyor. Günümzde virus yerine trojanlar popüler(di) o da gözlemlediğim kadarıyla düşüştü. 

     

    Sistem programcısı olmayacaksan ya da elektronikle uğraşmayacaksan (alternatif bir sürü dil var ayrıca belirteyim) C tabanlı bir dilde ilerlemen daha mantıklı. Piyasaya hitap etmek istiyorsan böyle olmalı. Ama aşırıya gitmek istersen mesela savunma sanayinde çalışmak istersen öğren :) 

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek
    serhat8102 bunu yazdı

    - İşlemcinizin gücünü en iyi şekilde ortaya koyabilecek tek programlama dilidir.

    - Cok az yer kapladığı için bilgisayar virüslerin yazımında kullanılırlar.
    - Çok hızlı çalıştıkları için işletim sistemlerinde kernel ve donanım sürücülerinin programlanmasında, hız gerektiren kritik uygulamalarda kullanılmaktadır.
    - Yapısı itibariyle üç boyutlu ekran kartlarında ilgili çizim ve efektlerin işlenmesi amacıyla hem oyunlar hem de programlar içinde ekran kartına hitap eden makina dili kodları kullanılmaktadır.
    - Herhangi bir amaç doğrultusunda (genelde programların daha hızlı çalışması için optimize edilirken), herhangi bir programlama dili altında, o dilin kodları arasında kullanılabilir. Yani diğer dillerle beraber de kullanabilirsiniz. Sizin uzman olduğunuz dil belki Visual Basic dir. Ama işin içinden çıkamadınız, assembly bilen bir arkadaşınız sizin için birkaç kod ekledi ve tamam.
    - İyi öğrenildiğinde diğer dillerde karşılaşılan büyük problemlerin assembly ile basit çözümleri olduğu görülür. Yani başka programlama dillerde çalışan insanların bu iş imkansız dediği yerde assembly devreye girer. Bu üstünlük daima var olacaktır...
    - Yazdığınız programın kaynak kodlarını tüm dünya ile paylaşsanız dahi kodlar o kadar karmaşıktır ki insanlar assembly bilse dahi ne işe yaradığını çözmeleri çok uzun zamanlarını alır. (Açıklayıcı bilgiler koymadı iseniz) Assembly bilmeyen bir insanın kaynak kodu anlaması imkansızdır.
    - Her program derlendiğinde makina diline dönüşür. Bunlar assembly kodlarına dönüştürülebilirler. (Buna disassembly olayı denir, bunu yapan programlar ise disassembler'lar dır.) Bu sayede assembly bilen bir insan zor da olsa diger programların çalışma şekillerini inceleyebilir ve üzerlerinde oynama yapabilir. Bu özellik de başka hiçbir dilde yoktur. Daha ileri gidip programların şifre isteyen bölümleri değişik yöntemlerle kırılabilir. Serial Generator türü programlar bu şekilde yapılabilmektedir.
    - Zaman geçtikce ve insanlar üreten yerine tüketen bilgisayar kullanıcıları haline geldikçe bu dili bilmenin ayrıcalığı artmaktadır.

    1) x86 asm yazıp da MMX, SSE, SSE2, SSE3... genişletmelerini kullanan hiçbir insan tanımıyorum (yok değil, ben tanımıyorum. Bu konuda da örnek koda, Intel'in kitapçıkları hariç, rastlamadım).

    2) Kodlama yükü ile çıktı boyutu arasındaki ilişki günümüzde çok önemli değildir. Virüsler de dahil olmak üzere.

    3) İşlemcinin tüm olanaklarından yararlanmıyorsanız en hızlı programı da yazmamışsınız demektir (birinci madde).

    4) Baştan x86 asm kodlama yerine C, C++, Delphi vs. dillerin satır içi asm olanağından yararlanılarak optimizasyon yapılır ya da halihazırda derlenen program parçalarının en iyilemesi refactoring metodu ile sağlanır. C'de bile satır içi asm standart değildir.

    5) Problem çözümü her zaman için bir yığın kullanmak ya da ağır aritmetik işlemleri gerçekleştirmek değildir. Problemin çözümünde ne kadar yüksek seviyeye çıkarsanız o kadar rahat edersiniz. 

    6) asm ile yazdığınız uygulamaya kod yükünden dolayı müdahale etmekte zorlanacağınız için C ile derleyip dağıttığınız uygulamaların kırılması daha zor olabilir.

     

    Elinizin altında 2,0 GHz işlemci ve 1 GB bellek varsa önceliğiniz performans değil stabilite olmalıdır. sadece 100 defa dönen bir döngüyü 20-30 ms hızlandırmak için asm ile kastırılmaz. Tabi elinizde 1M+ dönen bir döngü varsa her adımdaki 10 ms'lik bir kazanç yakalayabiliyorsanız yaklaşık 166 dakika kazanırsınız.

     

    Sözüm o ki çok özel bir iş yapmıyorsanız da öğrenin. Hiçbir işinize yaramasa bile (ki yarayacağını düşünüyorum) farklı bir bakış açısına sahip olursunuz. emu8086 ile başarılar diliyorum.


    Olaylara karışmayın!
Toplam Hit: 2913 Toplam Mesaj: 24