Şimdi Ara

assembly programlama dili nasıl öğrene bilirim

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
51
Cevap
2
Favori
24.272
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 123
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • çok zor bir programlama dili ama öğrenmem gerekiyor nerden baslamalıyım yada nerden ders ala bılırım bide assembly programlama dili nı bıraz acıklarmısınız :D cok sevinirim



    < Bu mesaj bu kişi tarafından değiştirildi $layer -- 4 Temmuz 2013; 15:18:50 >



  • Asm prog. dili değil önce bunu öğren. Ayrıca hangi asm? Ve niçin öğrenmen gerekiyor?
  • quote:

    Orijinalden alıntı: Tugrul_512bit

    Programlama dili değil, makina dilidir ve makinaya özgü komutları olur. 8080 simülatörüyle başlayıp temelleri kavradıktan sonra x86 ya geçiş yaparsın(tasm nasm yasm fasm gibi şeylerle) daha sonra SSE ve AVX gibi vektörsel hızlandırıcı komutlarına geçersin aynı zamanda işletim sistemlerine özgü komutları kullanmayı da öğrenirsin. Bunları da geçtikten sonra fpga programlamayı öğrenebilirsin.

    Kısaca 8-16 bit -----> 32 bit -------> 64 bit -------> fpga

    hocam iyi biliyor gözüküyorsunuz, yaptığınız veya üzerinde çalışıyor olduğunuz projeler var mı?neler yapıldığını merak ettim
  • quote:

    Orijinalden alıntı: gandalff

    quote:

    Orijinalden alıntı: Tugrul_512bit

    Programlama dili değil, makina dilidir ve makinaya özgü komutları olur. 8080 simülatörüyle başlayıp temelleri kavradıktan sonra x86 ya geçiş yaparsın(tasm nasm yasm fasm gibi şeylerle) daha sonra SSE ve AVX gibi vektörsel hızlandırıcı komutlarına geçersin aynı zamanda işletim sistemlerine özgü komutları kullanmayı da öğrenirsin. Bunları da geçtikten sonra fpga programlamayı öğrenebilirsin.

    Kısaca 8-16 bit -----> 32 bit -------> 64 bit -------> fpga

    hocam iyi biliyor gözüküyorsunuz, yaptığınız veya üzerinde çalışıyor olduğunuz projeler var mı?neler yapıldığını merak ettim

    Hocam iyi bilmiyorum, sadece birkaç c++ fonksiyonunun asm sürümünü yeniden yazıp hızlandırdım o kadar(mesela string boyunu bulan fonksiyonu biraz hızlandırdım). Eminim fpga ilerde çok daha ün kazanacaktır belki cpu ların yerini alacak çünkü bir program ile işleyişini değiştirebiliyorsun mesela "2 çekirdek olsun 1 MB önbellek olsun" mantığında bir program gönderiyorsun tık tık ayarlıyor ve istediğin oluyor, sonraki gün baktın 8 çekirdek gerekti ver programı al çekirdekleri. En güzel özelliklerinden biri de girdi çıktı olayının sabit hızlı olması yani hiç kasıntı yaşamaması.




  • quote:

    Orijinalden alıntı: Tugrul_512bit

    quote:

    Orijinalden alıntı: gandalff

    quote:

    Orijinalden alıntı: Tugrul_512bit

    Programlama dili değil, makina dilidir ve makinaya özgü komutları olur. 8080 simülatörüyle başlayıp temelleri kavradıktan sonra x86 ya geçiş yaparsın(tasm nasm yasm fasm gibi şeylerle) daha sonra SSE ve AVX gibi vektörsel hızlandırıcı komutlarına geçersin aynı zamanda işletim sistemlerine özgü komutları kullanmayı da öğrenirsin. Bunları da geçtikten sonra fpga programlamayı öğrenebilirsin.

    Kısaca 8-16 bit -----> 32 bit -------> 64 bit -------> fpga

    hocam iyi biliyor gözüküyorsunuz, yaptığınız veya üzerinde çalışıyor olduğunuz projeler var mı?neler yapıldığını merak ettim

    Hocam iyi bilmiyorum, sadece birkaç c++ fonksiyonunun asm sürümünü yeniden yazıp hızlandırdım o kadar(mesela string boyunu bulan fonksiyonu biraz hızlandırdım). Eminim fpga ilerde çok daha ün kazanacaktır belki cpu ların yerini alacak çünkü bir program ile işleyişini değiştirebiliyorsun mesela "2 çekirdek olsun 1 MB önbellek olsun" mantığında bir program gönderiyorsun tık tık ayarlıyor ve istediğin oluyor, sonraki gün baktın 8 çekirdek gerekti ver programı al çekirdekleri. En güzel özelliklerinden biri de girdi çıktı olayının sabit hızlı olması yani hiç kasıntı yaşamaması.

    bilgiler için çok sağolun hocam, hele ki ek olarak girdi çıktı olaylarını en yüksek verime kendi başına optimize edebilecek bir yazılım olsa neyse çok çalışmak lazım




  • quote:

    Orijinalden alıntı: Guest-73A8A7D1E

    quote:

    Orijinalden alıntı: Tugrul_512bit

    quote:

    Orijinalden alıntı: gandalff

    quote:

    Orijinalden alıntı: Tugrul_512bit

    Programlama dili değil, makina dilidir ve makinaya özgü komutları olur. 8080 simülatörüyle başlayıp temelleri kavradıktan sonra x86 ya geçiş yaparsın(tasm nasm yasm fasm gibi şeylerle) daha sonra SSE ve AVX gibi vektörsel hızlandırıcı komutlarına geçersin aynı zamanda işletim sistemlerine özgü komutları kullanmayı da öğrenirsin. Bunları da geçtikten sonra fpga programlamayı öğrenebilirsin.

    Kısaca 8-16 bit -----> 32 bit -------> 64 bit -------> fpga

    hocam iyi biliyor gözüküyorsunuz, yaptığınız veya üzerinde çalışıyor olduğunuz projeler var mı?neler yapıldığını merak ettim

    Hocam iyi bilmiyorum, sadece birkaç c++ fonksiyonunun asm sürümünü yeniden yazıp hızlandırdım o kadar(mesela string boyunu bulan fonksiyonu biraz hızlandırdım). Eminim fpga ilerde çok daha ün kazanacaktır belki cpu ların yerini alacak çünkü bir program ile işleyişini değiştirebiliyorsun mesela "2 çekirdek olsun 1 MB önbellek olsun" mantığında bir program gönderiyorsun tık tık ayarlıyor ve istediğin oluyor, sonraki gün baktın 8 çekirdek gerekti ver programı al çekirdekleri. En güzel özelliklerinden biri de girdi çıktı olayının sabit hızlı olması yani hiç kasıntı yaşamaması.

    bilgiler için çok sağolun hocam, hele ki ek olarak girdi çıktı olaylarını en yüksek verime kendi başına optimize edebilecek bir yazılım olsa neyse çok çalışmak lazım

    Alıntıları Göster
    Fpga sıradan yazılım geliştiricilerin yapabileceği şey değil. Bir kere kendi gömülü donanımınız olacak. Fpga çipleri mcu lardan çok daha pahalı. Üzerine kod yazma mikroişlemcilerden tümüyle farklı. Çekirdek falan yok, yazdığınız kod sentezlenip fpga üzerinde lojik bağlantıları oluşturuyor ve üzerindeki mantık kapılarının elverdiği sürece paralel olarak çalışabiliyor. Yani kod aslında yazılımsal değil donanımsal olarak çalışıyor. Verimli olabilmek için lojik devre dizaynı hakkında da bilgi sahibi olmanız gerek. Burada söz edilmesi mantıksız. Yeter ki o kadar ağır algoritma çalıştıracak ihtiyacınız olsun. Çözüm bir şekilde bulunur. Sanki proje varda işlemci sorun oldu.




  • quote:

    Orijinalden alıntı: Guest-BF8E9B238

    Fpga sıradan yazılım geliştiricilerin yapabileceği şey değil. Bir kere kendi gömülü donanımınız olacak. Fpga çipleri mcu lardan çok daha pahalı. Üzerine kod yazma mikroişlemcilerden tümüyle farklı. Çekirdek falan yok, yazdığınız kod sentezlenip fpga üzerinde lojik bağlantıları oluşturuyor ve üzerindeki mantık kapılarının elverdiği sürece paralel olarak çalışabiliyor. Yani kod aslında yazılımsal değil donanımsal olarak çalışıyor. Verimli olabilmek için lojik devre dizaynı hakkında da bilgi sahibi olmanız gerek. Burada söz edilmesi mantıksız. Yeter ki o kadar ağır algoritma çalıştıracak ihtiyacınız olsun. Çözüm bir şekilde bulunur. Sanki proje varda işlemci sorun oldu.

    Alıntıları Göster
    Arkadaşlar merhaba, 16F877 ile işlere başladım. Sonra ARM veya FPGA programlamaya geçmeyi düşünüyorum. Doğru mu yapıyorum sizce ?

    Elektrik-Elektronik Müh. 3.sınıfa geçtim




  • quote:

    Orijinalden alıntı: BraveHeart

    Arkadaşlar merhaba, 16F877 ile işlere başladım. Sonra ARM veya FPGA programlamaya geçmeyi düşünüyorum. Doğru mu yapıyorum sizce ?

    Elektrik-Elektronik Müh. 3.sınıfa geçtim

    Alıntıları Göster
    kitap al en iyisi
  • quote:

    Orijinalden alıntı: Deblue

    kitap al en iyisi

    Alıntıları Göster
    Siz aynı şeyden mi bahsediyorsunuz?
  • quote:

    Orijinalden alıntı: hasan1980125

    Siz aynı şeyden mi bahsediyorsunuz?

    Alıntıları Göster
    Eğer ingilizce bilginiz varsahttp://www.tutorialspoint.com/assembly_programming/assembly_introduction.htm benim favorilerimde ekli böyle bir site var.Umarım işinize yarar.




  • quote:

    Orijinalden alıntı: cbasaranoglu

    Eğer ingilizce bilginiz varsahttp://www.tutorialspoint.com/assembly_programming/assembly_introduction.htm benim favorilerimde ekli böyle bir site var.Umarım işinize yarar.

    Alıntıları Göster
    Kolay değil api lerle iç içe olman lazım.
    ingilizce bilmek zorundasın çünkü yeterli türkçe kaynak yok
    http://crackmes.de bu sitede biraz örnekleri incele.




  • quote:

    Orijinalden alıntı: Fatih54102

    Kolay değil api lerle iç içe olman lazım.
    ingilizce bilmek zorundasın çünkü yeterli türkçe kaynak yok
    http://crackmes.de bu sitede biraz örnekleri incele.

    Alıntıları Göster
    Assembly çok zordur hocam .Allah kolaylık versin . Türkçe kitap pek bulamazsın . Bulsanda emir kodlarını verir ama bir program nasıl yazılır pek değinmez. Nette simulatörler var . Yabancı kaynaklar en iyisi

    Ne için öğreneksin acaba ?




  • quote:

    Orijinalden alıntı: senatorts

    Assembly çok zordur hocam .Allah kolaylık versin . Türkçe kitap pek bulamazsın . Bulsanda emir kodlarını verir ama bir program nasıl yazılır pek değinmez. Nette simulatörler var . Yabancı kaynaklar en iyisi

    Ne için öğreneksin acaba ?

    Alıntıları Göster
    Assembly Aslında basitttir.
    Gören Kişi Değerlerin ne işe yaramadığını bilmeyince zor diyebilir.
    Aslında ben eski bir kitap ve 80 sayfalık bir pdf çıktısından öğrendim Assembliy i.Zor Değil .Ve şimdi işletim sistemi yapıyorum kendi çapımda.Eğer Assemblye Başlayacaksan Netwide Assembler (Nasm) Kullan Bence.Diğerleri Daha Zor Ve Boş.




  • quote:

    Orijinalden alıntı: Afcult

    Assembly Aslında basitttir.
    Gören Kişi Değerlerin ne işe yaramadığını bilmeyince zor diyebilir.
    Aslında ben eski bir kitap ve 80 sayfalık bir pdf çıktısından öğrendim Assembliy i.Zor Değil .Ve şimdi işletim sistemi yapıyorum kendi çapımda.Eğer Assemblye Başlayacaksan Netwide Assembler (Nasm) Kullan Bence.Diğerleri Daha Zor Ve Boş.

    Alıntıları Göster
    acaba o pdf i bulma şansımız varmı yada sızde varsa bize atabılırmısınız
  • quote:

    Orijinalden alıntı: $layer

    acaba o pdf i bulma şansımız varmı yada sızde varsa bize atabılırmısınız

    Alıntıları Göster
    Assembly programlama dili değildir diyen arkadaşlar şayet Bilgisayar Mühendisliği okuyor veya mezunlarıysalar , diplomalarını yırtabilir veya kayıtlarını sildirebilirler.
    "An assembly language is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) correspondence between the language and the architecture's machine code instructions." -Wikipedia

    He daha akademik bir alıntı istiyorsanız , Assembly alanında artık bir başucu kitabı haline gelen (Tıpkı Knuth'un The Art of Computer Programming serisi gibi) , Randall Hyde'a ait The Art of Assembly Language kitabının adına bakabilirsiniz. Kitabın adı zaten Assembly Language içeriyor. Kitaptan küçük bir alıntı yapalım ;
    "What’s Wrong With Assembly Language
    Assembly language has a pretty bad reputation. The common impression about assembly language
    programmers today is that they are all hackers or misguided individuals who need enlightenment."

    Assembly , alçak seviye bir programlama dilidir. (Şöyle el kaldırıp hayıııır alçak seviye dil dediğin C diiiir diye zıplayacak arkadaşlar için bknz : Tanenbaum Hiyerarşisi)
    Öncelikle Assembly öğrenecekseniz , hangi işlemci mimarisini ve ailesini hedef alacağınızı belirlemelisiniz. Zira , donanıma oldukça yakın olan bir dil olarak , aynı mimariyi kullanan farklı işlemci ailelerinde bile farklılıklar gösterir.

    Söz gelimi , Intel'in x86 mimarisinde Assembly öğrenmek istiyorsunuz. Şimdi ikinci basamak , bir Assembler belirlemektir. Basit şekliyle söylemek gerekirse bir Assembler , Assembly dilinde yazılmış kodu executable (.exe) koda çeviren yazılımdır. İçerisinde Linker , Compiler , Loader gibi yapılar barındırır (Loader esasen OS'a ait ama neyse.). Her assemblerın sentaksı az çok farklılık gösterir.

    Örnek vereyim ;

    TASM'de (veya MASM); MOV AX , Degisken1 ile yapacağınız işlemi
    NASM'de , MOV AX , [Degisken1] ile yaparsınız. (NASM otomatik offset tanımlama gibi yardımcı elemanlar kullanıyor. Güya siz kolay programlayın diyeymiş ama hiç bulaşmayın derim.)

    Bu aşamayıda geçtik. Artık öğrenmeye başlayabiliriz.

    1)İşlemci ailesi belirledik
    2)Assembler seçtik
    3)Önemli. Seçtiğiniz işlemci ailesinin organizasyonunu ve mimarisini (farklı kavramlar) en azından başlangıç seviyesinde öğrenin. (General Purpose registerlar kaç tane , shift registerlar kaç tane , ALU kaç bitlik , little endian mı big endian mı , coprocessor var mı , FPU var mı , single cycle mı - multi cycle mı , pipeline var mı , superscalar mı vb...)

    Mimari ve organizasyonu da az çok kavradık.

    4)İyi bir Assembly kitabı edinin. x86 ailesi için önerilerim ,

    80X86 IBM PC and Compatible Computers: Assembly Language, Design and Interfacing Vol. I and II (3rd Edition) Mazidi ailesinin muhteşem kitabı.
    Assembly Language for x86 Processors Irvine Kip'in , MASM kullanan modern kitabı.
    IBM PC Assembly Language and Programming - Peter Abel bulabilirseniz okuyun nadir bir kitap

    ve başlıkta bahsettiğimiz , The Art of Assembly Programming Randall Hyde.


    Çalışırken , "bu da detay bilgi artık" diyerek hiçbir bilgiyi atlamayın. Peter Abel ve tüm ASM programcıları , sık sık belirtirler : Assembly programcılığı detaycı bir iştir. Sözgelimi , bir 8086'lı bilgisayarın , klavye bufferının başlangıç adresi , size detay gibi gelebilir. Ama değildir.



    NOT : ASCII tablosunu ve 16lık sayı sistemini akıcı bir şekilde bilmenizde fayda var. Özellikle 16lık sayı sistemi kısmı çok önemli.
    NOT2: 8086 işlemcisinde program yazmak ve denemek için emu8086 programını deneyebilirsiniz. 8086 işlemcisinin çalıştığı bir sanal makine emülasyonudur.

    Bunun dışında merak ettiklerin için özel mesaj atabilirsin.




  • quote:

    Orijinalden alıntı: spartico

    Assembly programlama dili değildir diyen arkadaşlar şayet Bilgisayar Mühendisliği okuyor veya mezunlarıysalar , diplomalarını yırtabilir veya kayıtlarını sildirebilirler.
    "An assembly language is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) correspondence between the language and the architecture's machine code instructions." -Wikipedia

    He daha akademik bir alıntı istiyorsanız , Assembly alanında artık bir başucu kitabı haline gelen (Tıpkı Knuth'un The Art of Computer Programming serisi gibi) , Randall Hyde'a ait The Art of Assembly Language kitabının adına bakabilirsiniz. Kitabın adı zaten Assembly Language içeriyor. Kitaptan küçük bir alıntı yapalım ;
    "What’s Wrong With Assembly Language
    Assembly language has a pretty bad reputation. The common impression about assembly language
    programmers today is that they are all hackers or misguided individuals who need enlightenment."

    Assembly , alçak seviye bir programlama dilidir. (Şöyle el kaldırıp hayıııır alçak seviye dil dediğin C diiiir diye zıplayacak arkadaşlar için bknz : Tanenbaum Hiyerarşisi)
    Öncelikle Assembly öğrenecekseniz , hangi işlemci mimarisini ve ailesini hedef alacağınızı belirlemelisiniz. Zira , donanıma oldukça yakın olan bir dil olarak , aynı mimariyi kullanan farklı işlemci ailelerinde bile farklılıklar gösterir.

    Söz gelimi , Intel'in x86 mimarisinde Assembly öğrenmek istiyorsunuz. Şimdi ikinci basamak , bir Assembler belirlemektir. Basit şekliyle söylemek gerekirse bir Assembler , Assembly dilinde yazılmış kodu executable (.exe) koda çeviren yazılımdır. İçerisinde Linker , Compiler , Loader gibi yapılar barındırır (Loader esasen OS'a ait ama neyse.). Her assemblerın sentaksı az çok farklılık gösterir.

    Örnek vereyim ;

    TASM'de (veya MASM); MOV AX , Degisken1 ile yapacağınız işlemi
    NASM'de , MOV AX , [Degisken1] ile yaparsınız. (NASM otomatik offset tanımlama gibi yardımcı elemanlar kullanıyor. Güya siz kolay programlayın diyeymiş ama hiç bulaşmayın derim.)

    Bu aşamayıda geçtik. Artık öğrenmeye başlayabiliriz.

    1)İşlemci ailesi belirledik
    2)Assembler seçtik
    3)Önemli. Seçtiğiniz işlemci ailesinin organizasyonunu ve mimarisini (farklı kavramlar) en azından başlangıç seviyesinde öğrenin. (General Purpose registerlar kaç tane , shift registerlar kaç tane , ALU kaç bitlik , little endian mı big endian mı , coprocessor var mı , FPU var mı , single cycle mı - multi cycle mı , pipeline var mı , superscalar mı vb...)

    Mimari ve organizasyonu da az çok kavradık.

    4)İyi bir Assembly kitabı edinin. x86 ailesi için önerilerim ,

    80X86 IBM PC and Compatible Computers: Assembly Language, Design and Interfacing Vol. I and II (3rd Edition) Mazidi ailesinin muhteşem kitabı.
    Assembly Language for x86 Processors Irvine Kip'in , MASM kullanan modern kitabı.
    IBM PC Assembly Language and Programming - Peter Abel bulabilirseniz okuyun nadir bir kitap

    ve başlıkta bahsettiğimiz , The Art of Assembly Programming Randall Hyde.


    Çalışırken , "bu da detay bilgi artık" diyerek hiçbir bilgiyi atlamayın. Peter Abel ve tüm ASM programcıları , sık sık belirtirler : Assembly programcılığı detaycı bir iştir. Sözgelimi , bir 8086'lı bilgisayarın , klavye bufferının başlangıç adresi , size detay gibi gelebilir. Ama değildir.



    NOT : ASCII tablosunu ve 16lık sayı sistemini akıcı bir şekilde bilmenizde fayda var. Özellikle 16lık sayı sistemi kısmı çok önemli.
    NOT2: 8086 işlemcisinde program yazmak ve denemek için emu8086 programını deneyebilirsiniz. 8086 işlemcisinin çalıştığı bir sanal makine emülasyonudur.

    Bunun dışında merak ettiklerin için özel mesaj atabilirsin.

    Alıntıları Göster
    Madem ki FPGA'den bahsedilmiş biraz ona da değinelim. FPGA'ler , ülkemizde malesef pek satılmıyor. Uygun fiyatla satan bir Çizgi Tagem vardı onu da kapattılar. Yurt dışından getirme şansınız varsa Academic Discount (öğrenci indirimi) ile yaklaşık 200 TL'ye , başlangıç seviyesinde bir FPGA alabilirsiniz.

    FPGA'lerin programlanması öyle önce şunları şunları yap daha oraya çok var şeklinde bir programlama değildir. FPGA'ler söz konusu olduğunda işin içine Hardware Description Language'lar girer. Bu diller , programlama dili gibi kodlar yazarak , FPGA üzerindeki lojik kapı dizilerini istediğiniz şekilde kombine etmenizi sağlar. Bu yolla , FPGA içinde istediğiniz donanımı tasarlarsınız yazılımsal olarak. Sentaksı C'ye benzeyenler de var , Pascal'a benzeyenler de. VHDL , JHDL , Verilog vb.

    Mesela Verilog ile bir flip flop yazacaksınız ;
    module flop (clk, d, q);
    input clk, d;
    output q;
    reg q;

    always @(posedge clk)
    begin
    q <= d;
    end
    endmodule

    Bu pozitif kenar tetiklemeli bir flip flop oluşturacaktır FPGA içerisinde. Ortalama bir donanım bilgisine sahip birisi olarak , çalışarak ve tasarlayarak öğrenebilirsiniz. FPGA'ler özellikle prototip tasarımında önem arz ediyor. Fakat öte taraftan , tek başına yeterli değil. FPGA'lerde tasarlanan donanımların entegresi üretilirken çok fazla sahtecilik oluyor. Wafer teknolojisi hala kilit önem taşıyor.


    Bu arada yukarıda gördüm ki Assembly'nin makina dili olduğu iddia edilmiş. Fakat değildir. Örnek verelim ;

    000000 00001 00010 00110 00000 100000 solda , MIPS mimarisine ait R tipi , makina dilinde yazılmış bir kod görüyoruz. Assembly gibi gözüküyor mu ? Hayır. Reg1 ve Reg2'deki sayıları toplayıp Reg6'ya yazan bir kod bu. İnanmayanlar , hadi şu kitabı açın bu kitabı açın demiyorum ama , Google'a "Machine Language" yazarlarsa sevinirim*.


    *Ben google'a güvenmem madem çok bir halt biliyorsun referans ver diyenler için : Herhangi bir Bilgisayar Organizasyonu veya Assembly kitabı. Ama kitap olacak. Bloglardaki tutoriallar değil. Bilgisayar Bilimleri hocaları tarafından yazılmış olacak.

    *http://en.wikipedia.org/wiki/Machine_code



    < Bu mesaj bu kişi tarafından değiştirildi spartico -- 28 Temmuz 2013; 5:19:01 >




  • quote:

    Orijinalden alıntı: spartico

    Madem ki FPGA'den bahsedilmiş biraz ona da değinelim. FPGA'ler , ülkemizde malesef pek satılmıyor. Uygun fiyatla satan bir Çizgi Tagem vardı onu da kapattılar. Yurt dışından getirme şansınız varsa Academic Discount (öğrenci indirimi) ile yaklaşık 200 TL'ye , başlangıç seviyesinde bir FPGA alabilirsiniz.

    FPGA'lerin programlanması öyle önce şunları şunları yap daha oraya çok var şeklinde bir programlama değildir. FPGA'ler söz konusu olduğunda işin içine Hardware Description Language'lar girer. Bu diller , programlama dili gibi kodlar yazarak , FPGA üzerindeki lojik kapı dizilerini istediğiniz şekilde kombine etmenizi sağlar. Bu yolla , FPGA içinde istediğiniz donanımı tasarlarsınız yazılımsal olarak. Sentaksı C'ye benzeyenler de var , Pascal'a benzeyenler de. VHDL , JHDL , Verilog vb.

    Mesela Verilog ile bir flip flop yazacaksınız ;
    module flop (clk, d, q);
    input clk, d;
    output q;
    reg q;

    always @(posedge clk)
    begin
    q <= d;
    end
    endmodule

    Bu pozitif kenar tetiklemeli bir flip flop oluşturacaktır FPGA içerisinde. Ortalama bir donanım bilgisine sahip birisi olarak , çalışarak ve tasarlayarak öğrenebilirsiniz. FPGA'ler özellikle prototip tasarımında önem arz ediyor. Fakat öte taraftan , tek başına yeterli değil. FPGA'lerde tasarlanan donanımların entegresi üretilirken çok fazla sahtecilik oluyor. Wafer teknolojisi hala kilit önem taşıyor.


    Bu arada yukarıda gördüm ki Assembly'nin makina dili olduğu iddia edilmiş. Fakat değildir. Örnek verelim ;

    000000 00001 00010 00110 00000 100000 solda , MIPS mimarisine ait R tipi , makina dilinde yazılmış bir kod görüyoruz. Assembly gibi gözüküyor mu ? Hayır. Reg1 ve Reg2'deki sayıları toplayıp Reg6'ya yazan bir kod bu. İnanmayanlar , hadi şu kitabı açın bu kitabı açın demiyorum ama , Google'a "Machine Language" yazarlarsa sevinirim*.


    *Ben google'a güvenmem madem çok bir halt biliyorsun referans ver diyenler için : Herhangi bir Bilgisayar Organizasyonu veya Assembly kitabı. Ama kitap olacak. Bloglardaki tutoriallar değil. Bilgisayar Bilimleri hocaları tarafından yazılmış olacak.

    *http://en.wikipedia.org/wiki/Machine_code

    Alıntıları Göster
    Ben mühendis değilim ama assembly nin programlama dili olmadığı biliyorum. Verdiğin tanımda geçen "(generally one-to-one) correspondence between the language and the architecture's machine code instructions." ifadesinin ne anlama geldiği gayet açık.

    Makina dili ile sembolik makina dili (assembly) arasında fark yok. Bu C' de #define ile sembolik sabit tanımlama gibidir. Ha sabiti direkt yazmışsın ha semboliğini. Makina kodu yazmak için belleğe opcode girmeye gerek yok. Asm de bal gibi makina kodudur. Daha da ikna olmayan varsa derleyici ve çevirici kavramlarına göz atsın. Assembly compiler diye birşey yoktur, assembler vardır.




  • quote:

    Orijinalden alıntı: Guest-BF8E9B238

    Ben mühendis değilim ama assembly nin programlama dili olmadığı biliyorum. Verdiğin tanımda geçen "(generally one-to-one) correspondence between the language and the architecture's machine code instructions." ifadesinin ne anlama geldiği gayet açık.

    Makina dili ile sembolik makina dili (assembly) arasında fark yok. Bu C' de #define ile sembolik sabit tanımlama gibidir. Ha sabiti direkt yazmışsın ha semboliğini. Makina kodu yazmak için belleğe opcode girmeye gerek yok. Asm de bal gibi makina kodudur. Daha da ikna olmayan varsa derleyici ve çevirici kavramlarına göz atsın. Assembly compiler diye birşey yoktur, assembler vardır.

    Alıntıları Göster
    Fizik mühendisiyim ama diplomamı alalı çok olmadı yırtmayayım

    Bir sorum olacaktı: sanal makine kurup içine 16 ya da 32 bit bir işletim sistemi kurduktan sonra assembly öğrenirken sistemi çökertirsek gerçek işletim sisteminin de çökme olasılığı var mı?



    < Bu mesaj bu kişi tarafından değiştirildi Tugrul_512bit -- 28 Temmuz 2013; 13:09:37 >




  • Tugrul_512bit kullanıcısına yanıt
    evet onuda cokertırsın
  • quote:

    Orijinalden alıntı: $layer

    evet onuda cokertırsın
    elektro_gadget , Assembly'nin programlama dili olarak sayılmadığı tek bir kitap gösterebilirseniz hepimiz aydınlanmış oluruz. Bilgisayar Bilimleriyle ilgili akademik camiayı aydınlatmış olursunuz.
    Tuğrul Bey , eğer bahsettiğiniz Virtual Box veya VMWare gibi programlar ise , hayır. Deneyimle sabittir , Oracle'ın Virtual Box'una kurduğum FreeBSD'yi , kerneline saldıracak bir rootkit yazarak çökerttim. Hiçbir sorun yok. Zaten , sanal makine sistemlerinin temel amacı budur , soyutlama sağlamak. Ve fakat , donanıma vereceğiniz zararlar konusunda yorum yapamam. Ama çoğu profesyonel yapay makine yazılımı , gerçek (host) işletim sistemi ve donanım ile aranıza geçilmez bir bariyer koyar. Geçmenize zaten izin vermez.

    elektro_gadget'a gelince ;

    "An assembly language is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) correspondence between the language and the architecture's machine code instructions."

    Türkçesi : "Bir assembly dili , bir bilgisayar veya başka bir programlanabilir cihaz için alçak seviyeli bir programlama dilidir. Bu dil ile mimarinin makine dili komutları arasında çok güçlü (genellikle bire bir) bir uyuşma vardır."

    Burada kast edilen , mimarinin instructionları ile assembly dilinin mnemoniclerinin birbirlerini karşılamasıdır. Assembly "programlama dili" , makine dilinin insan tarafından kolay anlaşılabilmesi için geliştirilmiş bir mnemonic programlama dilidir.



    "How Does Assembly Language Relate to Machine Language?
    Machine language is a numeric language specifically understood by a computer’s processor (the CPU). All x86 processors understand a common machine language. Assembly language consists of statements written with short mnemonics such as ADD, MOV, SUB, and CALL." Irvine Kip , Assembly Language for x86 Processors 6th Ed. Sayfa 4.

    Türkçesi : "Assembly Dili'nin Makine Diliyle ilişkisi nedir?
    Makine dili , özellikle bilgisayarın CPU'su tarafından anlaşılan bir nümerik dildir. Tümm x86 işlemcileri ortak bir makine dili ile çalışır. Assembly dili , ADD , MOV , SUB gibi mnemoniclerle yazılmış ifadeler(statement)'den oluşan bir dildir."

     assembly programlama dili nasıl öğrene bilirim

    Resimde görülen kısım , Mazidi'nin 80x86 için Assembly kitabından. Ne diyor ? "Assembly Language is referred to as a low-level programming language..."

    Okulunu okumadıysak da , kitabını okuyalım. Oradan buradan toplama bilgilerle sallamayalım. Yanlış biliyorsak da , öğrenelim , hatamızı kabul edelim.

     assembly programlama dili nasıl öğrene bilirim




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