January 10, 2013

Belki derlenen kodlar bildiğimiz gibi işlemiyordur!

Şöyle ki:

Eğer tek bir işaretçi ile kod yazmaya başlayıp, yığından veri çekmeye kalkarsanız assembly kodu çok kısa oluyor. Ancak bu bir dizi olursa devamı gibi başlangıç karışıyor ve nedense yığına ek bilgiler tıkılıyor! Elbette dizi kurulum işleminin basit olmasını bekleyemeyiz ama fazladan kaydedici (accumulator) neden yığına yedeklenir: '???'
'
(I) Tek İşaretçi (II) Dizi İşaretçi
================ ==================
// void main() {
push EBP push EBP
mov EBP,ESP mov EBP,ESP
sub ESP,4 sub ESP,'038h' // Yığın İşaretçisi (SP) kuruluyor...
push EBX push EBX
push EDI // '???'
xor EAX,EAX
// void * pc;
mov dword ptr -4[EBP],0 mov dword ptr -4[EBP],'EAX'
// void * [10] pcs;
mov ECX,0Ah // Dizi Boyutu ayarlanıyor...
lea EDI,-028h[EBP]
rep
stosd
'
Aslında II. programda pc işaretçisini kullanmıyorum. O satırı gizlemediğimde yukarıdaki gibi oluyor ama gizlediğimde ise aşağıdaki gibi bir assembly kodu elde ediyoruz. Tabii ki -4[EBP] adresi (BasePointer - 4) sıfırlanmıyor ve sanırım üzerine dizi yazılıyor olmalı:

'_Dmain:
push EBP
mov EBP,ESP
sub ESP,028h
push EDI
mov ECX,0Ah
xor EAX,EAX
lea EDI,-028h[EBP]
rep
stosd
pop EDI
leave
ret'

Bu koda aşağıdakine denktir ve/veya DMD ile derlenmiştir:
Alıntı:

>
> void main() {
>   void * [10] pcs;
> }
> ```

>

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
January 11, 2013

Salih hocam iyi güzel yazmışsınız ama benim bunlardan bir şey anladığım söylenemez :(

Ama olmuyorsa çokta zorlamaya gerek yok D ye o özellik eklenene kadar C'ye başlarım bende.

Her şey için çok teşekkür ederim :) sizi de yordum

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 11, 2013

Ben de çok anlamıyorum Zekeriyacığım...:)

Anlamaya çalışıyorum ki temelde bunların bir kısmını anlamak yeterli. Çünkü biz düşük ve orta seviyeli diller ile fazlasını yapıyoruz. Öğrendiklerimiz ise inline assembly ile küçük destekler şeklinde olacak. Belki sadece hız gereken yerlerde kullanacağız. Yoksa çoğu işi geliştirdiğimiz diller bizim yerimize yapıyorlar...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 11, 2013

Evet haklısınız.

Kaynak olmadan bu şekilde anlamaya çalışmak çok vakit alacaktır güzel bir ASM anlatan kitap bulmadığım sürece veya ciddi şekilde buna vakit ayırmadığım sürece ASM'yi çözebileceğimi zannetmiyorum açıkçası.

Artık beynim multi-threading yapamaz oldu. Ve okuduğumu anlamakta bile çok zorluk çekiyorum (Bilgisayarın zararları) Belki de biraz kafa dağıtmalı bir süre bilgisayardan uzaklaşıp daha sonra sakin kafayla ASM öğrenmeye çalışmak en iyisi olacaktır.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 11, 2013

Alıntı (zekeriyadurmus):

>

Artık beynim multi-threading yapamaz oldu. Ve okuduğumu anlamakta bile çok zorluk çekiyorum (Bilgisayarın zararları) Belki de biraz kafa dağıtmalı bir süre bilgisayardan uzaklaşıp daha sonra sakin kafayla ASM öğrenmeye çalışmak en iyisi olacaktır.
Pes etmiş gördüm seni...:)

Yok öyle sıvışmak, dur daha D'nin altını üstüne getireceğiz. Önceden D ile assemblye çok fazla girmemiştim. Sadece dilin davranışlarını anlamak için disassembling kodlarına bakıyordum. Şimdi sayende biraz daha derinlemesine girmeyi başardım. Bence devam edelim, ne dersin?

Alıntı (zekeriyadurmus):

>

Kaynak olmadan bu şekilde anlamaya çalışmak çok vakit alacaktır güzel bir ASM anlatan kitap bulmadığım sürece veya ciddi şekilde buna vakit ayırmadığım sürece ASM'yi çözebileceğimi zannetmiyorum açıkçası.
Bende eski bir kaynak, 1990 basımı bir kitap var. Aslında internette bolca kitap da var ama vakit faktörü işte. Yavaş yavaş her şey olur tabi senin acelen yoksa?

Kolay gelsin...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 12, 2013

Alıntı:

>

Pes etmiş gördüm seni...

Tam pes etmek değil ara vermek ama evet biraz öyle oldu. :)

Kitapçıları gezeyim detaylı bir şekilde ASM komutlarını anlatan bir kitap bulayım. PC ye NASM kurar öğrenmeye başlarım. Ciddi bir şekilde öğrenmek istiyorum bunları ama kafam bu aralar çok dolu biraz kitap okursam belki rahatlar :)

Alıntı:

>

Yok öyle sıvışmak, dur daha D'nin altını üstüne getireceğiz. Önceden D ile assemblye çok fazla girmemiştim. Sadece dilin davranışlarını anlamak için disassembling kodlarına bakıyordum. Şimdi sayende biraz daha derinlemesine girmeyi başardım. Bence devam edelim, ne dersin?

Vallaha hakkınızı nasıl öderim bilemiyorum. Devam edelim ama önce ben bir kitap bulayim :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 12, 2013

Estağfirullah ne hakkı, birlikte öğreniyoruz burada...

Aslında HLA öğrenmek lazım da bu saatten sonra sanırım beni aşar. Sizler gibi daha taze beyinler sünger gibi emer. Tabii ki C veya D'de yazılım geliştiriyorsak bu kadar da yüksek seviyelisine ihitiyacımız olmayabilir. Ama öğrenmek istereniz buyrun: http://www.plantation-productions.com/Webster/HighLevelAsm/index.html

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 12, 2013

Aslında bu HLA C veya D gibi dillerin içerisinde kullanılabilse güzel olurdu. Önder Uzun ve Kemal Gökkaya'nın yazdığı Mikroişlemciler ve Assembler Programlama kitabını satın aldım. Bunu okuyayım bunlar hakkında az da olsa bir bilgi sahibi olayım ondan sonra HLA'ya ve webdeki diğer kaynaklara bakarım :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

1 2
Next ›   Last »