Assembly Günümüzde Ne İşe Yarar? (Soru)
-
ajan1111 bunu yazdı:
-----------------------------
sana tavsiyem ne sor nede öğrenmeyi merak et. sadece assembly diye bi dil var diye bil gerisini salla gitsin.
-----------------------------aynen katılıyorum günümüzde cogu okullar bile yüzeysel anlatıp geciyolar.
-
UmuT38 bunu yazdı:
-----------------------------
ajan1111 bunu yazdı:
-----------------------------
sana tavsiyem ne sor nede öğrenmeyi merak et. sadece assembly diye bi dil var diye bil gerisini salla gitsin.
-----------------------------aynen katılıyorum günümüzde cogu okullar bile yüzeysel anlatıp geciyolar.
-----------------------------+1
hocam cidden merak etme, ama otomasyon işinde deli gibi para kırarsın buna dahil olarak C++ de geliştirdiğin taktirde ;
elinden tutan cok olur.
-
Elektronik, Pic falan uğraşmayı seviyorsan öğren.
Ama ben hiç sevmiyorum bu dili :p
He bana sorarsan her türlü PLC programlamayı öğren derim.
Her PLC'nin kendine göre yazılımı mevcut. Ama işin tekelini almış olan göt siemens eğitimi almanı tavsiye ederim. Bu işle uğraşıcaksan.
-
Assembly diye tek bir dil yok, her işlemci mimarisinin kendi assembly dili var, doğal olarak assembly öğrenirsen reverse engineering yaparsın hemde PLC programlarsın demek çok yanlış. Assembly dillerinin programlama paradigması olarak çok benzer olduğu doğrudur ancak yüksek seviyeli dillerde de bu benzerlikler vardır, belirli kontrol yapıları döngüler vb. iki dilin aynı olduğunu iddaa etmek için bunlar yeterli değil.
Diyelim ki x86-x64 assembly dilini öğrenmek istiyorsun bununla neler yapabilirsin ya da nerelerde kullanman gerekir.
- işletim sistemi geliştirme aşamasında çeşitli sistem registerlarına erişmek ve birçok başla işlemler için assembly "mecburidir".
- aygıt sürücüsü yazarken aynı şekilde gereklidir, çeşitli korumalı instructionları çalıştırmak veya sistem registerlerine erişmek için.
- virüs yazmak istiyorsan (virüs derken genel manada zararlı yazılım değil gerçek anlamda virüs yani kendi kodunu kopyalayan , bulaşma rutini olan programları kastediyorum) assembly i kullanmak zorundasın, C ile bile yazıyorsan assembly i yine kullanmak zorundasın.
- reverse engineering, crack vb işlemler için kullanmak zorundasın, şuanda en sık bu alanda kullanılıyor.
- tüm bunlardan daha önemlisi (bence) assembly bilmek bilgisayar ve yazılım konusundaki bilinç düzeyini çok arttırır, sana en büyük katkısı bu olur.
Ne amaçlarla kullanmayacağına gelince.
- sadece hız amacıyla assembly kullanmak mantıksızdır, C ile assembly e denk hatta bazen daha hızlı (iyi optimize edilmişse) kodlar yazılabilir.
- assembly i görsel programlar yazmak, C# veya bu tür çok yüksek seviyeli dillere alternatif gibi kullanmaya çalışmak en büyük hatadır ve dilden soğutur, assembly gerek duyulduğunda kullanılmalıdır ve, C# ile yapacaklarını yapmak için değil C ile bile yapamayacaklarını yapmak için kullanılmalıdır.
Assembly'e başlamak ve öğrenmek zor değildir, assembly ile uygulama geliştirmek ve yazılan kodu debug etmek asıl zor olandır. Eğer hala öğrenmek istiyorsan sana tavsiye edeceğim yegane assembler nasm dır. gelmiş geçmiş tartışmasız en iyi assembler (firex buralarda değil rahatça yazıyorum :))
şu döküman nasm kullanımını ve C ile birlikte nasıl kullanılabileceğini açıklıyor, öncelikle birkaç instruction öğrenmen şart tabi yoksa kodu okuyamazsın, ancak zaman alacak birşey değil.
http://forum.ceviz.net/diger-diller/106832-nasm-ile-assembly-programlam.html
-
en basit olarak trafik ışıklari bu dille yaziliyor, kabaca codlamanin temeli desek teşbihte hata olurmu bilmem ama öyle bişey işte :d
-
Makinanın dilidir en basiti, debugger yardımıyla ile programın makinayla nasıl haberleştiğini görürsün istersen müdahale edersin işte edince de cracking oluyor da. Çoğu programcı "Öyle bi algoritmam varki eben gelse çözemez!" der ama programcının ebesi bile debugger'da ortaya çıkar orası ayrı mesele tabiki. .NET hariç ki yeni yollar bulunmuşsa belki onlarda da oluyordur bilmiyorum ama win32 uygulamarının hepsi asm yardımıyla kırılır. Reverse-Engineering'in kalbidir yani asm, candır; cânandır.
Ayrıca game-hacking'de de asm olmazsa olmaz. Programların adresleriyle oynanır daimi olarak o kayıt kalır ama oyunlarda bu sadece trainer çalıştığı zamanda daimi kalır. İşte crack ile trainer arasındaki fark da bu oluyor diyebiliriz. Teknik olarak ikisinin de işi adreslerin değelerini değiştirmektir. Neyse...
Bkz: WinASM, MASM / TASMmov, eax [ecx+4f]
add, ebx 1
sub, edx ff
NOPAh ulan ah ne günlerdi. :)
-
makinanın ana dilidir yahut makinadaki entegrelerin programlamak için assembly kodlarıyla iletişime geçilir. yani bi makina düşün içinde elektronik kartlar var ve o kartlarda entegreler var ve o entegreler chip olarak üretilmiş ve o entegrelerin içinde yarı iletkenlerin oluşturduğu onlarca devre var ve o devrelerin içine sen assembly ile komut yazıp o entegreye yükleyip makinaya sağa git sola git üste çık aşağı in yani benim dediğimi yap diye emir verirsin o makinada senin yazdığın kodlar komutlar ile istediğini yerine getirir.(bu açıklamayı yıllarca eğitim veren hiçbir hoca yapmamıştır başka yerde bulamazsın benim kavramım oldu şimdi 5 dakikada :)
neyse bu programı öğrenmek mi istiyorsun napcaksın görsel eğitim seti ve kitapları var. googlede ara, bu dili herkes bi yerlerden duyup aklının bi köşesinde kalmış olur ama hiç üzerine gitmez çünkü zor gelir tabi bu zorluğun altında ingilizce dili yabancı geldiği ve devre dizaynını yapmayı bilmediği için üstüne gitmezler. bu yüzden hep yarım kalır. ama elin gavuru bu dile yatkın olduğu için su gibi içebilmektedir. bu dil tıpkı ingilizce gibi sürekli kullanmazsan unutursun bu dildie komutlarla çalıştığı için dilide sürekli çalışıp kafana yerleştirmek gerekir.(oturdum mantığı kavra diye sana cevap yazdım bu cevabımı okuyanlarda aynen böyle doğru diyorsun diyeceklerdir)
-
xor eax,eax
mov al,1
retn
candır assembly. uğraşmasıda bir okadar zordur. karışıktır. hızlıdır. görsel diller kadarda kolay değildir. reverse engineeringle uğrşcak kadar öğrenebildim anca. görsel dillerle yaptığın hemen herşeyi yaparsın hatta daha fazlasını. ama mesela bir form oluşturmak görsel dillerde bir tık ken, bu dilde biraz kod yazdırmanı gerektiriyo. ama arkadaşların dediği gibi, adam gibi öğrenirsen, sana çok kazandıracakda bir dildir ayrıca.
dipnot: assembly diyince ilk aklıma assembly elektronik malzemeler geldi nedense :)
-
ham madde ihtiyaci.
-
Assembly tamamen temel taştır diyebiliriz .
Eğer üstüne C de biliyorsan senden korkmak için
yeterli bir sebep :P
