Forum: Diğer Konular RSS
assembly ve red'i anlamak
Abdullah #1
Üye Ağu 2015 tarihinden beri · 18 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: assembly ve red'i anlamak
Merhaba, assembly'e ara ara bakıyorum, kavrayamadığım şeyler oluyor, ama c ile kıyaslanarak anlatılırsa kolayca anlarım diye düşünüyorum. Bu şekilde kaynak var mı bildiğiniz? Ve ya burda birkaç örnek yazarsanız sevinirim.
İkinci olarak red diye yeni bir programlama dili var, belki assembly kadar karışık. Onu da anlıyamadım. Normalde c-like programlama dili bilen biri biraz uğraşsa lisp gibi değişik syntaxları okuyabilir. Ama ben red'i anlıyamıyorum. Örnek;
Red [] L: charset "ABCDEFGHI" D: union N: charset "123456789" charset "0" 
repeat y 9 [repeat x 9 [col: either x = 1 [#" "][#"A" + (x - 2)]
  append p: [] set ref: (to word! rejoin [col y - 1]) make face! [size: 90x24
    type:    pick [text field] header?: (y = 1) or (x = 1)
    offset:  -20x10 + as-pair ((x - 1) * size/x + 2) ((y - 1) * size/y + 1)
    text:    form case [y = 1 [col] x = 1 [y - 1] 'else [copy ""]]
    para:    make para! [align: pick [center right] header?]
    extra:   object [name: form ref formula: old: none]
    actors:  context [on-create: on-unfocus: function [f e][f/color: none
      if rel: f/extra/old [react/unlink rel 'all]
      if #"=" = first f/extra/formula: copy text: copy f/text [parse remove text
          [any [p: L N not ["/" skip not N] insert p " " insert "/data "
          | L skip | p: some D opt [dot some D] insert p " " insert " " | skip]]
        f/text: rejoin [f/extra/name "/data: any [math/safe [" text {] "#UND"]}]
       if f/data [any [react f/extra/old: f/data do f/data]]]]
      on-focus: func [f e][f/text: any [f/extra/formula f/text] f/color: yello]
]]]] view make face! [type: 'window text: "PicoSheet" size: 840x250 pane: p] 
Uzaktan baksam düz yazı sanırım bunu..
Bu arada bu programlama dilinin temelini "rebol" oluşturuyor.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4389 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Assembly dili için C'den değil, mikroişlemciden başlamanı öneririm. Her assembly dili kendi mikroişlemcisine özgüdür ve o mikroişlemcinin komutlarını çok azıcık daha yönetilebilir hale getirir. Yani, mikroişlemciyi anlayınca assembly de tamam... Kolaylık açısından, Z80 gibi az sayıda yazmacı (register) olan bir mikroişlemciye bakmanı öneririm.

Ben Red'i hiç bilmiyorum. Hatta, tanımında geçen homoiconic ve gradual-typing gibi kavramları da hiç duymamıştım.

Ali
cos00kun #3
Üye Kas 2014 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Assembly de ilk başlaman gereken yer işlemci, ram, registerları anlamak ve nasıl çalıştıklarını kavramaktır bunları öğrenmeden bırakın asssembly öğrenmeyi yanına bile yaklaşmayın :-) bu gece değil ancak yarın size daha önce assembly ile bayağı haşır neşir olmuş biri olarak birkaç site önerebilirim hatta eski dökümanlarımı paylaşabilirim ..

Bu ön bilgiden sonra bit kavramından başlayıp assemblynin temeli yani register ları iyi öğrenin.. ancak lütfen c yada herangi bir programlama ile karıştırmayın çünkü Assembly de C / C++ deki işlevlerin yaptığı 1 satırlık işi bile onlarca satırda yazmak zorundasınızdır ..o yüzden C ile kıyaslamadan öğrenmek daha faydalı olur kanımca..
Assemblyden kopalı uzun zaman oldu ancak assemblyde sorularınızı burdanda sorun mutlaka birileri yardımcı olacaktır bende hatırladığım kadarıyla yardımcı olurum..
Mutlu günler....
cos00kun #4
Üye Kas 2014 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yatmadan buldum bu işin duayen yeri burasıdır

http://win32assembly.programminghorizon.com/download.html
Abdullah #5
Üye Ağu 2015 tarihinden beri · 18 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali z80 için Türkçe küçük bir tutorial vardı onu bitirdim, %90'ınını anladım konunun.

Ben assembly hakkında tamamen bilgisiz değilim, "c ile kıyaslıyarak öğrenmek"ten kastım koşullar ve döngüler gibi konulardı. Z80'le ilgili derste bu da vardı. Mesela Basic'de döngünün 16 kere tekrarlanmasının karşılığı vardı.

co00kun bende linux kurulu. "Flat Assembly" kullanırım diyordum. Hakkında bilgin var mı?
cos00kun #6
Üye Kas 2014 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Fiat assembly hakkında bilgim yok.. ama ben tekrar söyleyeyim ve sonrasında konuyu üstadlara bırakayım ; hangi assembly versiyonu olursa olsun hangi assembly türü olursa olsun assembly %80 öğrenmenin yolu işlemci, işlemi üzerindeki registerlar, hafıza yönetimi , stack, adresleme bilgisi v.s.gibi konularını ve çalışma mantıklarını ne kadar bildiğinize bağlıdır.. zira assembly komut seti diğer dillere göre daha öz ve basittir ama burda komut seti yada madem kıysalama yapılmasını seviyorsunuz söz dizimlernden ziyade yukardaki konular hakkındaki bilgileriniz ön plana çıkar.. öncelikle  x86... yada z... işlemci kitaplarını okumakta yarar var.. birde zannedersem Kaan Arslan nın assembly kursu başlayacaktı eğer istanbuldaysanız bi bakın derim Yıllardır C eğitimi verir kendisi ve çok değerli biridir sitesindende takip edebilrisin..
Yzım hatalarım şimdiden affola çabuk yazdım.. Mutlu ve huzurlu günler dikerim
Abdullah #7
Üye Ağu 2015 tarihinden beri · 18 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet dediklerini net olarak anladım. Yeni başlayanlar için güzel bi Türkçe kaynak bulamadım internette. İstanbulda değilim.
Ben özelden öğrendiklerimi yazıyım, sonra sen beni seviyeme göre yönlendir.
https://flatassembler.net/docs.php?article=manual 
Abdullah #8
Üye Ağu 2015 tarihinden beri · 18 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
pm kalkmış heralde
Cos00kun linkteki dökümana göz atar mısın, diğer asm'lerden farklı heralde.
    bits = 16
    display 'Current offset is 0x'
    repeat bits/4
        d = '0' + $ shr (bits-%*4) and 0Fh
        if d > '9'
            d = d + 'A'-'9'-1
        end if
        display d
    end repeat
    display 13,10
KolibriOs fasm ile yazılmış bide.
cos00kun #9
Üye Kas 2014 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Farkı yok oda C yada D nasıl bir programlama dili ise onlarda aynı ama yukarda yazdığım gerçekleri değiştirmiyor bu sadece söz dizimi ve kendine ait kuralları var :) aslında çok yapılan hata şu makina diliyle assembly biraz karıştılıyor assembly versiyonu ve dili ne olursa olsun bir assabler derleyicisi olan dil sadece ama makina diline yakin en güçlü dil... Flat assebly yi hatirladim bu arada ve öğrenmeni yada devam etmeni tavsiye ederim birçok işlemci ve OS u destekler..
Abdullah #10
Üye Ağu 2015 tarihinden beri · 18 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Assembly birebir çevriliyor diye anlatılıyor. İF, REPEAT birebir döndürülemez heralde. Hani programlama dillerinde "inline asm" var ya, bende fasm'yi "inline highlevel" yapabiliyor diye düşündüm. Nasm'de while gibi döngüler var mı mesela? Z80 önerdi Ali daha kolay diye. Ben normalde fasm öğrenmek istiyorum, z80'den geçiş yaparım diye düşündüm. Sen ne dersin?
cos00kun #11
Üye Kas 2014 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Makina dilinde döngü kavramı yok! Ve dediğindede çok haklısın if gibi bir komut nasıl olurda birebir çevrilir :-) bu tam bir saçmalık ancak yanlış anlamışda olabilirsiniz birebir çeviri konusunda belkide.. yinede jmp gibi karşılaştırma komutları makina dilinde direk vardır ve gelişmiştir aslında burda defalarca tekrar söylediğim üzere bizi yine aynı gerçekle yüz üstü bırakıyor yani CPU ve registerda bu işlemler nasıl oluyora geliyor iş ve bunu iyi kavramadıysan ne bilirsen bil farketmiyor eğer assembly de gerçek bir program yazmayacaksan :) aslında işe biraz elektronikte giriyor diyebilirim...

Z80 hakkında hiçbi fikrim yok ancak Ali bey dediyse haklıdır :-) birde kusura bakmayın assambly ile ilgimi keseli çok uzun zaman olduğundan birçok şeyi hatırlayamıyorum.. ben öğrenirken CPU, Ram, ve donanım çalışma ve elektronik yapılarını öğrenip ardından adresleme ve hafıza yönetimini öğrenmiş ve bu aşamada çok vakit kaybetmiştim çünkü sandığımdan zor konulardı.. ardından exe ve com dosya sistemi olan PE dosya yapısını ( windows ve dos için) öğrendim hatta bunla ilgili zamanında türkçe bir yazıda paylaşmıştım.. ardından exe ve com dosya yapısıyla uğraşmış ve o yıllarda moda olan cracker lık la haşır neşir olmuştum ( yasal olmayan hiç bir şey yapmadım ancak program kırmak yani tersine mühendislik öğrenmenin bence iyi her programcının bilmesi gereken bir konu olduğunu düşünüyorum ) burda IDA ve dağıtımı serbet olan Ollydebug gibi disambler programlarını öğrendim ki bence assebly öğrenmek isteyen insanların da en azından bilgi olarak biraz haşır neşir olması gereken programlar ve sizede tavsiye ederim.. ancak gerçek anlamda bana göre assembly öğrenmek için en eski olanı yani direk komut setini kullananları seçin .. açın debug programını yazın ancak hangi ömür yeter basit bir programı bile hatasız yazmaya bilemem :-) saygılar sevgiler
Bu mesaj cos00kun tarafından değiştirildi; zaman: 2016-10-23, 14:12.
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4389 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben Z80'i assembly kavramını anlama konusunda çok basit olduğu için önerdim. Eğer Z80 programlama gibi bir ihtiyaç yoksa ve hatta modern CPU'lardan birisi assembly ile programlanacaksa o zaman doğrudan o CPU'lara odaklanılabilir. Ama amaç yalnızca kavram olarak anlamaksa, bir kaç yazmaçlık bir işlemci yeter.

Sonra zaten D'de kodlarız ve derleyicinin arka planda ne kodlar ürettiğini bilmiş oluruz. :)

Ali
Abdullah #13
Üye Ağu 2015 tarihinden beri · 18 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Cos00kun anlattıkların bana çok uzak geliyor. Ben daha öğrendiklerimi nasıl, ne amaçla kullanacağımı bilmiyorum.

Genel olarak fasm ile ilgili yazılardan faydalanmayı düşünüyorum. D'yi bıraktım bu arada, belki Rust'dan devam edeceğim.

Edit:  D'yi bırakalı baya oluyor.
Bu mesaj Abdullah tarafından değiştirildi; zaman: 2016-10-26, 12:41.
cos00kun #14
Üye Kas 2014 tarihinden beri · 58 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
söylenecek tek cümle var o zaman .. "Fasm iyidir yola devam et " ama D yide bırakma
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-03-23, 11:15:23 (UTC -07:00)