Şimdi Ara

Beyler Assembly?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
4 Misafir (1 Mobil) - 3 Masaüstü1 Mobil
5 sn
17
Cevap
0
Favori
502
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Beyler yüksek seviyeli bir dil öğrendim(python) işi biraz kavramak için. Çok profesyonel seviye değil ama algoritmam falan gelişti bir çok şeyi yapabilirim. Ama hala bir şeyler eksik yani ne oluyor nasıl derleniyor falan. Assembly i düşük seviyeli diye biliyorum ve işin temellerini öğrenmek için öğrenmek istiyorum. Sizce mantıklı bir şey mi yapıyorum. Bu arada bilgisayar mühendisliği hazırlık sınıfına bu sene başlayacağımç



  • içinde bulunduğumuz yıl itibariyla mantıklı değil. gcc'de derlenmiş bir c kodundan daha performanslı çalışan program yazmak için bayağı tecrübeli olman gerekir. c ile ilgilensen daha iyi olur.
  • assembly hackerlar icin onemli diye bliyorum. virus yapimi falan.

    birde senin amacin ney ne olsun istiyorsun ilk onu acikla bi ona gore biseyler diyim. application gelistirmek istiyorsan java ogren. desktop ve mobilde 1 numara.
  • Merakın varsa öğren, faydası olur. Zamanı geçti diyenlere de bakma, hiçbirşeyin zamanı geçmez.

    Günümüz koşulları itibari ile x86 yerine Arm asm tavsiye ederim.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Hocam bana kaynak linki atabilir misiniz?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • assembly ile iyi yazılmış bir kod her zaman iyi bir c derleyicisinden daha verimlidir,ama günümüzde herşeyi assembly ile yapamayız ömrümüz yetmez oyüzden yüksek seviyeli diller var.reverse engineering veya bilgisayar mimarisi öğreniyorsan assembly öğrenmelisin çünkü c c++ bile çoğu şeyi gizliyor.
  • quote:

    Orijinalden alıntı: koccan9

    assembly ile iyi yazılmış bir kod her zaman iyi bir c derleyicisinden daha verimlidir,ama günümüzde herşeyi assembly ile yapamayız ömrümüz yetmez oyüzden yüksek seviyeli diller var.reverse engineering veya bilgisayar mimarisi öğreniyorsan assembly öğrenmelisin çünkü c c++ bile çoğu şeyi gizliyor.

    Önerebileceğiniz türkçe kaynak, kitap var mı?
  • seçkin yayınevinin bir tane kitabı vardı x86 assembly dili diye.
  • koccan9 kullanıcısına yanıt
    Üssteki arkadaş;
    "Günümüz koşulları itibari ile x86 yerine Arm asm tavsiye ederim."
    yazmış ama. Ne demek istemiş anlayamadım siz x86 kitap önerdiniz ama arkadaş ne demek istemiş x86 yerine arm veya asm derken?
  • Assebler diye genel bir dil yoktur.

    X86 yani Intel ve uyumluları için geçerli assembler vardır arm cpular için ayrı Risc için ayrı, Motorla için ayrı hede için ayrı hödö için ayrı, benzer olabilir ancak aynı olamazlar.
    Yani arkadaş demişki intel yonga seti için öğrenme arm yani telefon mobil için olanları öğren.

    De

     
    section .text
    global _start
    _start:

    mov eax, 1234567890
    mov ebx, 5
    add eax, ebx

    ; Convert EAX to ASCII and store it onto the stack
    sub esp, 16 ; reserve space on the stack
    mov ecx, 10
    mov ebx, 16
    .L1:
    xor edx, edx ; Don't forget it!
    div ecx ; Extract the last decimal digit
    or dl, 0x30 ; Convert remainder to ASCII
    sub ebx, 1
    mov [esp+ebx], dl ; Store remainder on the stack (reverse order)
    test eax, eax ; Until there is nothing left to divide
    jnz .L1

    mov eax, 4 ; SYS_WRITE
    lea ecx, [esp+ebx] ; Pointer to the first ASCII digit
    mov edx, 16
    sub edx, ebx ; Count of digits
    mov ebx, 1 ; STDOUT
    int 0x80 ; Call 32-bit Linux

    add esp, 16 ; Restore the stack

    mov eax, 1 ; SYS_EXIT
    xor ebx, ebx ; Return value
    int 0x80 ; Call 32-bit Linux



    bu iki sayının toplamını print etmen için gereken kod. Tabiki hepsinden daha hızlı. Lakin öyleyken böyle.

    Bence,

    Bundan sonra Google Go öğren. Kesmez ise C veya Rust takılırsın bunlarda yetti gayri dersen. O zaman olabilir.

    Veya illa kasacaksan git C64 emülatörü ile uğraş. 8bit işlemci 64 k ram daha bir handle edilebilir. Hem C64 ün peek pook ları var bişileri daha kolay yaparsın.




  • Delifisek.Tux kullanıcısına yanıt
    Hocam işin temellerini de göreyim istiyorum. Python öğreniyorum içime sinerek. Ama yüksek seviye bir dil. Şu anda başlamayacağım python u sindirdikten sonra. Ama öğrenince işime de yarayacak bir şey olmasını isterim. Go duydum ama pek kullanım alanı olduğunu zannetmiyorum çünkü sadece ismini duydum. Pascal falan nasıl sizce?
  • Gerçek hayatta kullanmadığın bir araç üzerinde nasıl uzmanlaşacağını sanıyorsun, internette bulduğun 3 5 tane örneği tekrarlayarak mı ?

    He pascal öğren... Ufkun genişler.
  • Delifisek.Tux kullanıcısına yanıt
    Pascal öğrenmem konusunda ciddi miydiniz dalga mı geçtiniz?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Trespuanie T kullanıcısına yanıt
    Eger Assemly icin Turkce Kaynak ariyorsan Ilk Ingilizce ogren derim.
  • quote:

    Orijinalden alıntı: Trespuanie

    Pascal öğrenmem konusunda ciddi miydiniz dalga mı geçtiniz?

    Tabi ki dalga geçti. Düşük seviyeye meraklıysan bunun yolu C'den başkası değil. Assembly ancak opsiyonel olabilir. Zaten günümüzde assembly sadece c/c++ içindeki kritik noktaları optimize etmek amacıyla kullanılıyor.

    Aşağıda minik bir örnek yazdım. Burada fonksiyon çağrılarını, klavye okuma, ekrana yazma vs. işlerini C derleyicisi hallediyor. Bunlar asm ile zordur. Asm ile sadece esas hesaplama işini yapıp bırakıyoruz. Örnek olarak direkt c'de olmayan döndürme (rotate) işlemini yapalım. Fonksiyonumuz döndürülecek sayıyı ve kaç adım döndürüleceğini alıyor. Unutmadan sistemim Arm64.


    #include <stdio.h>
    #include <stdint.h>

    uint32_t sagaDondur(uint32_t sayi, uint32_t adim)
    {
    asm("ror %w0, %w0, %w1" : "+r" (sayi) : "r" (adim));
    return sayi;
    }

    int main()
    {
    uint32_t x, y;
    scanf("%u%u", &x, &y);

    printf("%u", sagaDondur(x, y));
    return 0;
    }



    Çıktı olarak şunu alıyoruz.



    0000000000000000 <main>:
    0: a9be7bfd stp x29, x30, [sp, #-32]!
    4: 90000000 adrp x0, 0 <main>
    8: 91000000 add x0, x0, #0x0
    c: 910003fd mov x29, sp
    10: 910073a2 add x2, x29, #0x1c
    14: 910063a1 add x1, x29, #0x18
    18: 94000000 bl 0 <__isoc99_scanf>
    1c: 29430ba1 ldp w1, w2, [x29, #24]
    20: 90000000 adrp x0, 0 <main>
    24: 1ac22c21 ror w1, w1, w2 <---- Aha burada. Derleyici inline yapmış.
    28: 91000000 add x0, x0, #0x0
    2c: 94000000 bl 0 <printf>
    30: 52800000 mov w0, #0x0 // #0
    34: a8c27bfd ldp x29, x30, [sp], #32
    38: d65f03c0 ret



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 27 Ağustos 2017; 1:17:8 >




  • Teşekkür ederim zaten kafamda c vardı kesinleşti. Python da ustalasinca başlayacağım c++ ya . Tekrardan teşekkürler.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • bu hafta ASM dili haftası olsun !

  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.