Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
16
Cevap
570
Tıklama
0
Öne Çıkarma
Beyler Assembly?
T
8 yıl
Yüzbaşı
Konu Sahibi

Beyler yüksek seviyeli bir dil öğrendim(python) işi biraz kavramak için. Çok profesyonel seviye değil ama algoritmam falan gelişti bir çok şeyi yapabilirim. Ama hala bir şeyler eksik yani ne oluyor nasıl derleniyor falan. Assembly i düşük seviyeli diye biliyorum ve işin temellerini öğrenmek için öğrenmek istiyorum. Sizce mantıklı bir şey mi yapıyorum. Bu arada bilgisayar mühendisliği hazırlık sınıfına bu sene başlayacağımç

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



Y
8 yıl
Yüzbaşı

içinde bulunduğumuz yıl itibariyla mantıklı değil. gcc'de derlenmiş bir c kodundan daha performanslı çalışan program yazmak için bayağı tecrübeli olman gerekir. c ile ilgilensen daha iyi olur.



H
8 yıl
Yüzbaşı

assembly hackerlar icin onemli diye bliyorum. virus yapimi falan.

birde senin amacin ney ne olsun istiyorsun ilk onu acikla bi ona gore biseyler diyim. application gelistirmek istiyorsan java ogren. desktop ve mobilde 1 numara.



G
8 yıl
Yarbay

Merakın varsa öğren, faydası olur. Zamanı geçti diyenlere de bakma, hiçbirşeyin zamanı geçmez.

Günümüz koşulları itibari ile x86 yerine Arm asm tavsiye ederim.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

Hocam bana kaynak linki atabilir misiniz?



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @elektro_gadget
K
8 yıl
Çavuş

assembly ile iyi yazılmış bir kod her zaman iyi bir c derleyicisinden daha verimlidir,ama günümüzde herşeyi assembly ile yapamayız ömrümüz yetmez oyüzden yüksek seviyeli diller var.reverse engineering veya bilgisayar mimarisi öğreniyorsan assembly öğrenmelisin çünkü c c++ bile çoğu şeyi gizliyor.


Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: koccan9

assembly ile iyi yazılmış bir kod her zaman iyi bir c derleyicisinden daha verimlidir,ama günümüzde herşeyi assembly ile yapamayız ömrümüz yetmez oyüzden yüksek seviyeli diller var.reverse engineering veya bilgisayar mimarisi öğreniyorsan assembly öğrenmelisin çünkü c c++ bile çoğu şeyi gizliyor.

Önerebileceğiniz türkçe kaynak, kitap var mı?



K
8 yıl
Çavuş

seçkin yayınevinin bir tane kitabı vardı x86 assembly dili diye.


Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

Üssteki arkadaş;
"Günümüz koşulları itibari ile x86 yerine Arm asm tavsiye ederim."
yazmış ama. Ne demek istemiş anlayamadım siz x86 kitap önerdiniz ama arkadaş ne demek istemiş x86 yerine arm veya asm derken?




Bu mesajda bahsedilenler: @koccan9
D
8 yıl
Yarbay

Assebler diye genel bir dil yoktur.

X86 yani Intel ve uyumluları için geçerli assembler vardır arm cpular için ayrı Risc için ayrı, Motorla için ayrı hede için ayrı hödö için ayrı, benzer olabilir ancak aynı olamazlar.
Yani arkadaş demişki intel yonga seti için öğrenme arm yani telefon mobil için olanları öğren.

De

 
section .text
global _start
_start:

mov eax, 1234567890
mov ebx, 5
add eax, ebx

; Convert EAX to ASCII and store it onto the stack
sub esp, 16 ; reserve space on the stack
mov ecx, 10
mov ebx, 16
.L1:
xor edx, edx ; Don't forget it!
div ecx ; Extract the last decimal digit
or dl, 0x30 ; Convert remainder to ASCII
sub ebx, 1
mov [esp+ebx], dl ; Store remainder on the stack (reverse order)
test eax, eax ; Until there is nothing left to divide
jnz .L1

mov eax, 4 ; SYS_WRITE
lea ecx, [esp+ebx] ; Pointer to the first ASCII digit
mov edx, 16
sub edx, ebx ; Count of digits
mov ebx, 1 ; STDOUT
int 0x80 ; Call 32-bit Linux

add esp, 16 ; Restore the stack

mov eax, 1 ; SYS_EXIT
xor ebx, ebx ; Return value
int 0x80 ; Call 32-bit Linux



bu iki sayının toplamını print etmen için gereken kod. Tabiki hepsinden daha hızlı. Lakin öyleyken böyle.

Bence,

Bundan sonra Google Go öğren. Kesmez ise C veya Rust takılırsın bunlarda yetti gayri dersen. O zaman olabilir.

Veya illa kasacaksan git C64 emülatörü ile uğraş. 8bit işlemci 64 k ram daha bir handle edilebilir. Hem C64 ün peek pook ları var bişileri daha kolay yaparsın.


Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

Hocam işin temellerini de göreyim istiyorum. Python öğreniyorum içime sinerek. Ama yüksek seviye bir dil. Şu anda başlamayacağım python u sindirdikten sonra. Ama öğrenince işime de yarayacak bir şey olmasını isterim. Go duydum ama pek kullanım alanı olduğunu zannetmiyorum çünkü sadece ismini duydum. Pascal falan nasıl sizce?




Bu mesajda bahsedilenler: @Delifisek.Tux
D
8 yıl
Yarbay

Gerçek hayatta kullanmadığın bir araç üzerinde nasıl uzmanlaşacağını sanıyorsun, internette bulduğun 3 5 tane örneği tekrarlayarak mı ?

He pascal öğren... Ufkun genişler.


Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

Pascal öğrenmem konusunda ciddi miydiniz dalga mı geçtiniz?



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @Delifisek.Tux
H
8 yıl
Yüzbaşı

Eger Assemly icin Turkce Kaynak ariyorsan Ilk Ingilizce ogren derim.




Bu mesajda bahsedilenler: @Trespuanie
G
8 yıl
Yarbay

quote:

Orijinalden alıntı: Trespuanie

Pascal öğrenmem konusunda ciddi miydiniz dalga mı geçtiniz?

Tabi ki dalga geçti. Düşük seviyeye meraklıysan bunun yolu C'den başkası değil. Assembly ancak opsiyonel olabilir. Zaten günümüzde assembly sadece c/c++ içindeki kritik noktaları optimize etmek amacıyla kullanılıyor.

Aşağıda minik bir örnek yazdım. Burada fonksiyon çağrılarını, klavye okuma, ekrana yazma vs. işlerini C derleyicisi hallediyor. Bunlar asm ile zordur. Asm ile sadece esas hesaplama işini yapıp bırakıyoruz. Örnek olarak direkt c'de olmayan döndürme (rotate) işlemini yapalım. Fonksiyonumuz döndürülecek sayıyı ve kaç adım döndürüleceğini alıyor. Unutmadan sistemim Arm64.


#include <stdio.h>
#include <stdint.h>

uint32_t sagaDondur(uint32_t sayi, uint32_t adim)
{
asm("ror %w0, %w0, %w1" : "+r" (sayi) : "r" (adim));
return sayi;
}

int main()
{
uint32_t x, y;
scanf("%u%u", &x, &y);

printf("%u", sagaDondur(x, y));
return 0;
}



Çıktı olarak şunu alıyoruz.



0000000000000000 <main>:
0: a9be7bfd stp x29, x30, [sp, #-32]!
4: 90000000 adrp x0, 0 <main>
8: 91000000 add x0, x0, #0x0
c: 910003fd mov x29, sp
10: 910073a2 add x2, x29, #0x1c
14: 910063a1 add x1, x29, #0x18
18: 94000000 bl 0 <__isoc99_scanf>
1c: 29430ba1 ldp w1, w2, [x29, #24]
20: 90000000 adrp x0, 0 <main>
24: 1ac22c21 ror w1, w1, w2 <---- Aha burada. Derleyici inline yapmış.
28: 91000000 add x0, x0, #0x0
2c: 94000000 bl 0 <printf>
30: 52800000 mov w0, #0x0 // #0
34: a8c27bfd ldp x29, x30, [sp], #32
38: d65f03c0 ret





< Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 27 Ağustos 2017; 1:17:8 >
Bu mesaja 1 cevap geldi.
T
8 yıl
Yüzbaşı
Konu Sahibi

Teşekkür ederim zaten kafamda c vardı kesinleşti. Python da ustalasinca başlayacağım c++ ya . Tekrardan teşekkürler.



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @elektro_gadget
P
3 yıl
Yarbay

bu hafta ASM dili haftası olsun !



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.