Assembly For Windows Türkçe Görsel Eğitim Seti
-
Çok sağol hocam okadar boş konu içinde yararlı bişi :) Up
-
"piyasada bana asm ile yazılmış kaç tane full program var gösterebilir misin? insanlar neden asm yi tercih etmiyor.
Elbette bazı alanlarda asm kullanırsın.atıyorum işletim sistemi yüklü olan bir parititonu nasıl formatlarsın, burada asm devreye girer ve yapacağını yaparsın
.Ama asm ile bir muhasebe programı yapamazsın. O kadar esnek bir değil"
Assembly bilen birisi sektör programlarıyla , muhasebe paketleriyle zaten ilgilenmez arkadasım, ancak windows apileri ya da ilgili kütüphaneler eklendikten sonra assmebly ile de rahatlıkla yapılabilir, yapılmamasının sebebi yapılmasının çok zor olması değil gereksiz olmasıdır...
Esneklik meselesine gelince, bunun anlamını birkere daha araştır, esneklik programcıya verdiği özgürlüktür, assembly en esnek dildir, C de öyledir.
-------
"api yazmaktan kastım sıfırdan yazmak değildir elbette, oraya o kadar apiyi eklemek..
bir messagebox için api yi kullanmak (daha doğrusu elle yazmak) diğer dillerde bazı şeyler standartlaşmıştır. Onlar için bazı fonkisyonlar için illa sınıf tanımı,api tanımı v.s. yapman gerek yok.işte bu yüksel seviyenin avantajıdır."
Evet visualbasic de bazı apiler kullanım kolaylığı olsun diye dile standart kod olarak eklenmiştir, MessageBoxA apisi bunlardan biridir, ancak bunlarla tek başına ciddi bir program yazılamaz, visual basicle o söylediğin ciddi programları yazmak içinde tıpkı assemly deki gibi tanımlama yapmak zorundasın, en basit apiyi ele alacak olursak,
VB de,
******
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long /* en başta bir kere*/
MessageBoxA 0,string,string,0
******
//////////////////////////
Assembly de,
include \masm32\include\user32.inc /* en basta bir kere*/
includelib \masm32\lib\user32.lib /* en basta bir kere*/
invoke MessageBoxA 0,string,string,0
******
yani api kullandıktan sonra en yüksek seviye dil ile en aşağ seviye dil arasında bile pek kod farkı olmuyor..
Tekrar söylemem gerekirse dil olarak asm ile vb nin zorluk farkı tartışılmaz ama asm bilen bir insan elinde kütüphaneler, (lib) ve baslık dosyaları(inc) olduktan sonra aynı programın alasını yazar...
"Haa diyorsan asm ile vb arasında kod uzunluğu arasında fark yok diyorsan. Bir program yazalım orta derecede uzunlukta. socket kullanan bir mesajlaşma programı yada veritabanına kayıt işlemlri yapan, resimli listesi olan v.s. bakalım kim daha çabuk yapabiliyor :)"
Buna cevap verdim, kullandığın kütüphaneleri aynen alırsam yazdığım kod seninkinden çok fazla olmaz ama derlendikten sonra daha hızlı çalışır ve boyutu daha küçük olur. Tabi ben C ile bile windows programları yazmaya karşıyım, bir çok programcı da benimle hemfikirdir, assembly bilipte muhasebe programı yazan adam bulamazsın..
"bir test de yapabiliriz. basit bir exe yazın, kodlarına bakın.sonra bir disammbler programıyla yada hiew tarzı bir programla asm kodlarına bakın.Bakın bakalım kaç satır var meydanda :) "
Bir C programını dev c++ da derlediğimde 8 kb, aynısını visual c++ da derlediğimde 210 kb oluyor, yani programın uzunluğu derleyiciye bağlıdır,yani bir visual basic programının disassembly edilmiş hali bin satır kod diye , programın aynısı assembly de bin satır kod ile mi yazılacak demektir..?
Edit: sayfanın ak musum kusura bakmayın istemeden oldu :)
-
Zamanım olsaydı seninle bu tartışmayı sürdürürdüm ama sonuç olarak bir yere varamayacağız. Vb derleyicisinde bir çok şey standartlaştırılmıştır. Mesela ben bir textbox koyduğumda ve programı derleyip çalıştırdığımda textboxa sağ tıkladığımda tümünü seç,kes,kopyala,ıvır zıvır bir menü geliyor. Aynı menünü gelmesi için ilk olarak sizin textbox için var olan apiyi eklemeniz gerekmektedir. Basit program da yapsanız zor programda yapsanız bu apiler olmak zorunda her kontrolün varlığında? Piyasada neredeyse tüm muhasebe programlarının vb ile yapıldığını biliyorum. Asembly ile yapmak saçma diyorsun da neden saçma onu da söyle de arkadaşlar bilsin :) derleyici konusuna gelince, derleyiciye göre değişir bu. Ancak şu her zaman geçerlidir. Vb ile 10 satırda yaptığım iş her zaman asembly de daha fazla satırla daha çok kod yazarak ve daha çok şey bilmek zorunda olarak yapıyorum. Asm çok kapsamlı vb ye göre ve yeni başlamış birine asmyi övmek, onu da vb değerinde göstermek mantıksızlıkdır.Ve inanıyorum ki programlama ile ilgilsi hiç olmayan biri bu seti indirsin ve izlesin. Sonra vb seti yada üst seviyeli herhangi bir dilin setini izlesin. Bu prgramcı adayı hangi dili öğrenem ister. Asm nin zor olduğu bariz. Asm yi lütfen basic tabanlı dillerle kolaylık zorluk derecesinde karşılaştırmayın. Asm ile bir soket programalama yapmak ile vb de yapmak arasında dağlar kadar fark vardır..
Neyse son söyleyeceklerim ise , isteyen istediği dile geçer. Eğer elektronik (mikroişlemci programlama tabii asm şar değil, daha basit olan picbasic var, yada CCS C i kullanılabilir.), cracking yada driver yazımı-donanımsal işler yapmak istiyorsanız asm yi öğrenin. Aksi halde normal masaüstü yazılımcılığında profesyonel olarak ilgilenmiyorsanız hiç programlama dili bilmeyenler için çıkartılmış Basic tabanlı dillere yönelin. Bu diller esnek ve öğrenilmesi basittir. Asm ise öğrenilmesi zor ve kullanım alanı profesyonel alanlara hitap eden bir dildir.
Saygılar
-
asm iyidir asm ögrenin vbden iyidir asm
-
Hocam wsock32.lib dosyasını includelib ile ekledikten sonra C de kullandığın soket fonksiyonların hepsi elindedir, üstelik tıpkı C deki gibi tek satır halinde kullanırsın fonksiyonları,visual basic de yapamayacağın bir çok şeyi de yaparsın.
Zorluk kolaylık konusunda hemfikiriz, zaten ben zorluk kolaylık konusunda birşey söylemiyorum, yapılabilirlik, yapılamazlık, kaç satırda yapılabilir vs bunu tartışıyoruz.
Ben yine de tüm programcılara asm yi öğrenmesini tavsiye ederim, asm bilen birisi için hem diğer diller ve bu dillerde kullanılan bir çok yöntem daha iyi anlaşılır.
Ayrıca makinanın çalışma prensipleri de çok daha iyi anlaşılır, tabi ilgi meselesi. Ben hatır için bile olsa muhasebe programı yazmam açıkçası kim neye ilgi duyuyorsa onunla ilgilenir...
-
Kardeşim paylaşım paylaşımdır.niye sorun ediyorsunuzki.
-
bu setten lazım. elinde olan var mı ?
