Neden ASM ile yazılan kodlar güncel mimarilerde daha yavaş çalışır...

Başlatan gerbay, 07 Eylül 2016, 00:33:32

z

Bu pointerlar, fonksiyon pointerlar, recursive fonksiyonlar falan var ya asm de o kadar ama o kadar çok sıradan şeyler ki anlatamam.

ASM de pointerlara takla attırmama rağmen C de yada delphide pointer kullanırken her zaman kafam karışır.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

Alıntı yapılan: z - 08 Eylül 2016, 22:02:58
Bu pointerlar, fonksiyon pointerlar, recursive fonksiyonlar falan var ya asm de o kadar ama o kadar çok sıradan şeyler ki anlatamam.

ASM de pointerlara takla attırmama rağmen C de yada delphide pointer kullanırken her zaman kafam karışır.

Hocam o zaman siz bir dahisiniz benim algoritma ve programlama dersinde Self referential structures konusunu anlamam 3 haftamı almıştı konu C üzerinde anlatılıyordu.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

Hayır hayır alakası yok. C de adres vererek bir hedefe ulaşmaya pointerle erişim deniyor. Asm de index/indirek adresleme şekli sürekli kullandığımız bir adresleme tipi. Register içeriğinin gösterdiği adresteki veriyi oku demek C de pointerle eriş demenin aynısı. Biz hiç bir iş yapmıyoruz sadece işlemcinin direk adresleme komutları yerine indirek adresleme komutlarını kullanıyoruz. Oluyor bunun adı pointerle erişim.

Keza aynı şekilde jmp table hazırlarız ve tablonun içine hedef adresleri doldururuz. Bir registerin aldığı değere göre jmp tablosunda buna ait hedef adrese jump edilir. Bu da fonksiyon pointer oluyor.

C aslında asm yazımı anlaşılır ve bazı hamallıkları kaldırmak içi geliştirilmiş.

C de pointeri 1 artırdınmı pointer tipi byte ise adres 1 artar, short veri için 2 artar, integer veri için 4 artar. Kaç artacağına siz hiç kafa yormazsınız.

Fakat asmde biz bu artışı kendimiz yaparız. Yok aslında birbirimizden farkımız. Siz hamallığı derleyiciye yüklüyorsunuz biz ise kendimiz sırtlanıyoruz.

Siz işaretli sayı barındıran byte tipi değişkeni integer degişkene oku dersiniz olur biter biz byte veriyi okuruz ardından da registerin boş bitlerine işaret bitini yayarız.

Biz özgür kızlarız. Siz ise aile kızları. Sizi aile ve çevre baskılar. Biz kafamıza eseni yaparız. Bu yüzden sizin kodlarınız hemen hemen hep düzgün çalışır. Biz bazen hata yapar kötü yola düşeriz.

Self referential structures nedir hiç bilgim yok ama eminim asm'de sıradan yaptığımız bir işlemdir. Google'dan bakayım şimdi neymiş ne değilmiş.

---------

Yok sırdan kullandığımız bir yapı değilmiş.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

Alıntı yapılan: z - 08 Eylül 2016, 22:26:15

Self referential structures nedir hiç bilgim yok ama eminim asm'de sıradan yaptığımız bir işlemdir. Google'dan bakayım şimdi neymiş ne değilmiş.

---------

Yok sırdan kullandığımız bir yapı değilmiş.


Bu yapıyı ASM de kullanmanız gerektiğinde gerbay hocamın "amelelik" tabirini daha iyi anlayacağınızdan eminim hocam :)



http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

Hocam biz ameleliği kod yazarken yapıyoruz.

Amelelik sürekli pratik sürekli pratik demek. Sporcular sürekli idman yapar bu sayede formlarını korurlar. Biz de öyle ve bu tür amelelikler bizi hiç rahatsız etmiyor.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

X-Fi

@z hocam 2 önceki mesajımda da söyledim sizin ASM kullanmanız beni rahatsız etmiyor. Kişisel projeniz zamanınız bol, stres yok! istediğiniz gibi yazmakta özgürsünüz. Ancak yeni nesil yazılımcılara meslektaşlarımıza yanlış örnek olmayınız.

ASM'de yazan iyide C'de yazan tukaka derseniz olmaz. ikisinin de yeri ayrıdır. Proje yapmak isteyen adam C'de yazsın ASM ile uğraşmasın diye söyleyin olsun bitsin.

Sayılarımla.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

z

Özel mesajla, mail yoluyla, sosyal medya üzerinden dil seçimi konusunda kendilerini yönlendirmemi isteyen arkadaşlar sık sık ararlar beni.

Bugüne kadar hiç birine asm öğren dememişimdir. Hepsine de C öğren demişimdir.

ASM öğrenmek bir ayrıcalıktır. Kişinin içinde varsa öğrenir.

Ben sadece ASM'ye tüh kaka dediğinizde fikrimi söylüyorum. ASM tüh kaka bir dil değidir. Lojik tasarımdan zevk alanların aynı zevki CPU'da da alması için yapılmış kutsal bir dildir.

Bir el sanatı tipidir.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

engerex

Alıntı yapılan: DEno_12 - 08 Eylül 2016, 00:44:38
@z @gerbay sayın hocalarım,

Böyle atışacağınıza kodlarla atışsanız daha öğretici olmaz mı hepimiz için? İkinizin de ortak çalıştığı bir konuda basit bir kod öbeğini biriniz c ile biriniz asm ile yazsa da benchmark testi yapsak aynı işlemci üzerinde. Olmaz mı?

Aynen uygulayın görelim. Belki pythonla daha hızlı kod yazan çıkar.

z

Bedavaya gösteri olmaz.

Mesela nasıl bir gösteri olabilir. Noktadan sonra 256 digite kadar sinüs hesaplaması olabilir.

Böyle bir fonksiyona kaç para ödersiniz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

RaMu

Yahu arkadaş bir işe bakıyorsunuz
yok yav bu neymiş, bunu insan yapamaz hayırrrrr diyorsunuz,
BEN ve benim diyebilen birkaç sıradan insan,
oturuyor sizin bu
takip edemezsiniz,
onuda hesaba katamazsınız,
derleyiciden optimize kodu yazamazsınız,
vs. vs. dediğiniz şeyleri
pratik ede ede öyle kanıksıyoruz ki
derleyicidende iyi yazıyoruz,
ve bu zor dediğiniz şeyler bize çerez geliyor,
hatta bazen bir şeyi C ile yazmaktansa ASM ile yazmak çok daha kolay geliyor.

Nispeten yeni işlemcilerin öyle güzel ASM komutları varki
C ile yazmaya gerek dahi kalmıyor,
zaten adınıda koyuyorlar hemen
C optimised instruction set.

@X-Fi herhalde uzak durman gereken kişilerden biri benim :)
Bir şirkette Argeciyim ve ASM ile projelerimizi yazıyoruz,
şu ana kadar yapamadığım proje olmadı.
Ama yok mu var tabiki, ethernet usb dersen asm ile yazamam.

Şimdi gelelim C cilere katıldığım taraflara,
tamam eskiden program memory küçücüktü,
işlemciler hızlı değildi,
belki C derleyicileride iyi kod üretmiyordu vs.
ama şimdi işlemciler uçuyor,
fiyatlarda gayet makul veya düşük,
hatta senin istediğin işi arada bir bakıp yapacak kadar hızlı olan mcu modeline geçmenin
devede kulak denecek kadar maddi etkisi olur,
zaten işlemciler C optimize komut setli,
derleyiciler gayet güzel kod üretiyor,
ne diye halen asm de asm diyorsun,
burada haklısınız bence.
Yeni nesil mcu lar için sadece asm ile yazmak avantajlı gözükmüyor.

İşinizi ASM ile yapmayacak dahi olsanız,
ben programcıyım, ben şu işlemciye kod yazıyorum, benim işim bu, diyebilmek için
o işlemcinin ASM komutlarının en azından ne işe yaradığını bilmek zorundasınız.
Yoksa çok kral şoförüm ama lastik patlasa değiştirmeyi bilmiyorum durumu oluyor.
Neyin üzerinde koştuğunu bilmek suç mu?

Birde yaptığımız ürün insan hayatı ile birebir ilgili,
bu yüzden C derleyicisine güvenmiyoruz,
ve kodu ASM ile yazıyoruz,
evet paranoyağız,
ürünü yüzünden insan hayatına mal olan ve hapis yatan firma var,
birde şahsen basic derleyicisinde bulduğum hata var, söyledim düzelttiler, ve basic de bilmiyorum,
ara arada bakarım bazı C derleyicilerinin ne kadar aptalca kod ürettiğini görüp gülerim.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

magic_gun

Alıntı yapılan: z - 08 Eylül 2016, 23:17:47
Bedavaya gösteri olmaz.

Mesela nasıl bir gösteri olabilir. Noktadan sonra 256 digite kadar sinüs hesaplaması olabilir.

Böyle bir fonksiyona kaç para ödersiniz?



+1 ASM candır
    bu fonksiyonu 4 Mhz de yapalım !!! 
+1 RaMu
hayal etmeden basaramazsınız www.atariturkiye.com

berat23

@gerbay vurmuşi son darbe de benden gelsin.

asm'nin c veya daha yüksek seviyeli dillerden daha güvenli olması tamamen hikaye. safety critical programming ya da belli süreçlere(do178 vb.), bir dile/tekniğe yönelik değil aslında herşeyin kontrollü yapılmasını sağlayan süreçler. herşeyi detayıyla bilmen güvenli olur anlamına gelmiyor.

burda dünya çok ileride, değil c/c++, çok daha farklı araçlar mevcut;
http://www.esterel-technologies.com/success-stories/airbus/

mesela bu araç bir code generator ama sadece kod değil, test, trace vb. herşeyi yapabiliyor. linkte nerde, nasıl kullanılmış detaylı bilgi mevcut. bu abilerden daha emniyetli işler yapan yoktur sanırım?


ipek

enteresan...forum canlandı, bu medical aletin hatası canımı sıktı,perde arkasında neler dönüyor insan bilmek ister,25 yıl Motorola'da çalıştım,denetleyeni denetleyen firmalar var,hatta onlarıda denetleyenler var..nasıl bu aletin ticari aşamaya çıkmasını sağlayan güvenlik sertifikalarını vermişler,akıl alacak gibi değil,ortada bir suçlu yok,birçok suçlu mevcut...bir şekilde gözden kaçmış,hayret...

muhittin_kaplan

Eger biri guvenlik diyorsa, ADA derim. Gerisi bos teferruattir. Ben bukadar kati bir dil gormedim. Herseyi kontrol edip herseyi tam anlamiyla yapmani istiyor. Emin olun asm bile daha esnek.

engerex

Eğitim şart.
Ülkemizde de tomografi cihazı daha net görüntü veriyor diye bebeklerde limitin 10 katı radyasyona maruz kalmış. Therac-25 programcısı da herhangi bir resmi eğitim almamış. Ülkemizde de radyoaktif çekirdek hurdacılara kadar düşmüştü. İnsanlar hayatlarından oldular. Sonrasında bu tür ürünleri ithal etmel için atom enerjisi kurumundan sertifika olayı şart koşuldu.