Detaylar
Kim cevapladı?- Katılım
- 15 Aralık 2023
- Mesajlar
- 3.043
- Makaleler
- 3
- Çözümler
- 91
- Beğeniler
- 5.329
Hangi mimari?
- Katılım
- 22 Aralık 2023
- Mesajlar
- 4.733
- Makaleler
- 4
- Çözümler
- 90
- Beğeniler
- 6.810
İşlemciler, transistörlerin birbirine bağlanarak oluşturulduğu devrelerin bütünüdür, bu devrelerin belli şekilde bağlanması da talimatları oluşturur. İşlemcinin hangi talimatlara sahip olduğunu mimarisi belirler, her özgün mimarinin ASM'si farklıdır. Normalde siz kod yazarsınız ve derleyici insanın rahat okuyabileceği fonksiyonları ve mantığı o mimarinin assembly koduna çevirir, gelişmiş derleyiciler kod üzerinde optimizasyon yapar, en son assembler denilen bir programla işlemcinin yürütebileceği makine koduna çevrilir.
ASM, sadece kritik performans veya kaynak gerektiren işlerde kullanılan bir sistem haline gelmiştir. Günümüzdeki anlaşılması kolaylaşsın diye soyutlaştırılmış programlama dillerinin aksine tamamen somut yani bilgisayar kafasıyla düşünmek gereklidir. Öncelikle hangi mimariye ASM yazacağınızı belirlemeniz lazım. Her mimarinin ASM'si farklıdır. x86_64 veya Aarch64 ile başlanabilir. Daha basit olacaksa RISC-V veya armv7 gibi mimariler daha az talimatla daha kolay olabilir ama kullanım alanları az olduğu için doküman veya pratik örnek az olacaktır.
ASM, sadece kritik performans veya kaynak gerektiren işlerde kullanılan bir sistem haline gelmiştir. Günümüzdeki anlaşılması kolaylaşsın diye soyutlaştırılmış programlama dillerinin aksine tamamen somut yani bilgisayar kafasıyla düşünmek gereklidir. Öncelikle hangi mimariye ASM yazacağınızı belirlemeniz lazım. Her mimarinin ASM'si farklıdır. x86_64 veya Aarch64 ile başlanabilir. Daha basit olacaksa RISC-V veya armv7 gibi mimariler daha az talimatla daha kolay olabilir ama kullanım alanları az olduğu için doküman veya pratik örnek az olacaktır.
x86_64
x86 ve arm arasındaki farklar tam olarak nedir?İşlemciler, transistörlerin birbirine bağlanarak oluşturulduğu devrelerin bütünüdür, bu devrelerin belli şekilde bağlanması da talimatları oluşturur. İşlemcinin hangi talimatlara sahip olduğunu mimarisi belirler, her özgün mimarinin ASM'si farklıdır. Normalde siz kod yazarsınız ve derleyici insanın rahat okuyabileceği fonksiyonları ve mantığı o mimarinin assembly koduna çevirir, gelişmiş derleyiciler kod üzerinde optimizasyon yapar, en son assembler denilen bir programla işlemcinin yürütebileceği makine koduna çevrilir.
ASM, sadece kritik performans veya kaynak gerektiren işlerde kullanılan bir sistem haline gelmiştir. Günümüzdeki anlaşılması kolaylaşsın diye soyutlaştırılmış programlama dillerinin aksine tamamen somut yani bilgisayar kafasıyla düşünmek gereklidir. Öncelikle hangi mimariye ASM yazacağınızı belirlemeniz lazım. Her mimarinin ASM'si farklıdır. x86_64 veya Aarch64 ile başlanabilir. Daha basit olacaksa RISC-V veya armv7 gibi mimariler daha az talimatla daha kolay olabilir ama kullanım alanları az olduğu için doküman veya pratik örnek az olacaktır.
- Katılım
- 22 Aralık 2023
- Mesajlar
- 4.733
- Makaleler
- 4
- Çözümler
- 90
- Beğeniler
- 6.810
x86, piyasadaki tek CISC mimarisidir. Çok karmaşık ve çok spesifik ihtiyaçlara özel talimatlar barındırır. Bunun haricinde SIMD kabiliyetleri çok geniştir. Sayı yoğun işlemlerde geniş yazmaçlar kullanılırsa GPU'nun yapabildiği tarzda işler daha da hızlandırılabilir. Tabii çok niş talimatlar transistörleri harcadığı için mükemmel değildir.
ARM, RISC mimarisini temel alır. CISC'in aksine çok daha az talimata sahiptir ancak talimatlar verimli ve hızlıdır. Bu sebeple performans ve enerji verimliliği daha yüksektir. Günümüzdeki işlemcilerin gittiği yön daha çok RISC şeklindedir.
İki mimari de çok uzun zamandır vardır bir çok hedef oluşmuştur. x86_64''ün içinde dört farklı seviye, ARM64'ün altında 9 farklı ana seviye ve o seviyelerin ara seviyeleri vardır. Her hedefte bu mimariler daha fazla talimat ve SIMD kabiliyeti kazanmıştır.
Mimari komutlarını öğrenmen lazım. Herbir mimariye göre aynı komutlar ve farklı komutlar vardır.
Temel öğrenmen gerekenler;
Yazmaçlar (Registers),
Adresler (Adress modes),
Temel komutlar (Instructions),
Bayraklar (Flags),
Mimary özgü söz dizimi (Syntax)
Risc mimarisi komutları;
Intel 8086 mimarisi komutları;
Arm mimarisi komutları;
Temel öğrenmen gerekenler;
Yazmaçlar (Registers),
Adresler (Adress modes),
Temel komutlar (Instructions),
Bayraklar (Flags),
Mimary özgü söz dizimi (Syntax)
Risc mimarisi komutları;
Intel 8086 mimarisi komutları;
Arm mimarisi komutları;
Her programlama konseptinde zordan baslamanin kolaydan baslamaktan daha iyi oldugunu soylerim fakat is assembly'e gelince oyle degil. Assembly'i ogrenmeyi zorlastiran aslinda "learning curve" dedigimiz olay; iyice ogrenmek icin oncelikle assembly'si derleyiciden ziyade insana gore gelistirilmis bir mimarinin assembly'sini ogrenmek lazim. Ornegin 6502 bu tanima cok guzel uyuyor.
90'li yillarda performans artisinin ve paralelizasyonun getirdigi mimari secimlerden oturu x86 islemciler artik cok karmasik ve derleyicilerin insanlardan daha iyi assembly urettigi bir hale geldi. O yuzden, insana uygun bir assembly ile baslamak cok daha onemli bence.
90'li yillarda performans artisinin ve paralelizasyonun getirdigi mimari secimlerden oturu x86 islemciler artik cok karmasik ve derleyicilerin insanlardan daha iyi assembly urettigi bir hale geldi. O yuzden, insana uygun bir assembly ile baslamak cok daha onemli bence.
Arkadaşların dediği gibi daha kolay programlama dillerine bakın. FFmpeg gibi performans odaklı programlar yapmıyorsanız tabii.
Benzer konular
- Mesaj
- 4
- Görüntüleme
- 120