Visual Basic içinde Assembly kullanmak..

Visual Basic & Action script Visual Basic içinde Assembly kullanmak.. Programlama hakkında bilgi paylaş; Visual Basic içinde Assembly kullanmak.. VB#Turk Forum sayfasynda bir ba?lyk altyna Visual Basic'in grafik dosyalaryna efekt ...
Cevapla
WebMasTer SiTeSi
 
Seçenekler
  #1  
Arama 24-12-2007, 12:04
Celebrian - ait Kullanıcı Resmi (Avatar)

Üyelik Tarihi: 19/11/07
Mesajlar: 3.307
 
     WS-Ticareti: (0)
Teşekkürleri: 0
31 Msg. 38 Tşkr.
Rep Gücü: 36 Celebrian rep gücü yükselmeye başladı

Visual Basic içinde Assembly kullanmak..

Visual Basic içinde Assembly kullanmak.. VB#Turk Forum sayfasynda bir ba?lyk altyna Visual Basic'in grafik dosyalaryna efekt uygulamak için pek uygun bir dil olmady?yny, bu i? için çok yava? kaldy?yny yazmy?tym. ?imdi adyny hatyrlayamady?ym bir arkada?ymsa benim yazyma kar?ylyk olarak Visual Basic'in pek çok konuda gayet yeterli bir dil oldu?unu yazmy?ty. Bunun altyna bir mesaj yazarak bir tarty?ma çykarmak istemedim. Ancak arkada?ymyn dikkat etmedi?i bir nokta var. Ben Visual Basic için yetersiz bir dil demedim, efekt uygulamak için yava? kalyyor dedim. Bende arkada?ymla ayny fikirdeyim. Visual Basic pek çok alanda yeterli bir dildir. Özellikle kullanym ve ö?renilmesinin kolayly?y nedeniyle en çok tercih edilen dillerden biridir. Ancak arkada?ymyn da kabul etmesi gereken bir nokta var. Grafik efektleri ve benzeri bazy i?lemler için yava? bir dildir. Ancakbu yava?ly?yn önüne geçilebilir. Yine forumdaki yazymda assembly kullanarak bu yava?ly?y önleyebilir hatta c++, delphi vb. programlama dillerinden çok daha hyzly hale getirebiliriz. Örne?in;Visual Basic ile 800x600x24Bitx4.71MB bir dosyaya Contours efektini 7 saniyede, Assembly ile 0.02 saniyede uygulayabiliyoruz. Visual C++ ise ayny i?lemi 4.2 saniyede gerçekle?tiriyor. Tabii bu de?erler kullanylan bilgisayaryn gücüne, dosyanyn boyutuna ve efekte göre de?i?ecektir ancak sonuç de?i?meyecek assembly destekli visual basic bu i?lemi visual c++'dan daha hyzly gerçekle?tirecektir.

Assembly ilk baky?ta göze biraz kary?yk görünebilir. Kabul etmek gerekir ki çok kda kolay de?ildir. C++,Visual Basic, Delphi vb. diller gibi kolay ve bol kaynak bulamayabilirsiniz de. Hele kaynak kod konusunda imkanlarynyz bahsetti?im dillerle kar?yla?tyrdy?ynyzda yok denebilecek kadarAncak bize verebileceklerini dü?ünecek olursanyz bu zorlu?a katlanmaya de?er. Tabii ?öyle bir yanylgyya da dü?memek gerekir. Sadece assembly kullanarak bir grafik programy hazyrlayamazsynyz. Assembly ile hazyrlayaca?ynyz harici dll dosyalaryny projenizde kullanarak sadece gerekli olduklarynda kullanabilirsiniz. Yoksa assembly ile üçgen çizmeye kalkmanyz, programcylyktan so?umanyza neden olabilir. Bunu bir örnekle açyklamak gerekirse;
Basit bir form dü?ünün. Üzerine bir adet command button ekleyin. Button tyklandy?ynda program kapansyn.
Bu i?i yapan bir programy assembly ile hazyrlamaya kalkarsanyz yazmanyz gereken kodun uzunlu?u yakla?yk 7976 satyr olacaktyr. Yç açycy de?il, de?il mi?..
Peki ne i?imize yarayacak assembly?..
Yukaryda da dedi?im gibi assembly dilini sadece visual basic'in yava? kaldy?y durumlarda i?lemleri hyzlandyrmak örne?in bir grafik dosyasyna efekt uygulamak veya büyük de?erlerle i?lem yapmakta kullanabilirsiniz.

Basit bir örnek, assembly dili ile toplama i?lemi yapalym;

ilk olarak yapmamyz gereken a?a?ydaki kodu ADD.ASM adyyla kaydetmek.

[SECTION .bss]

NOne: resd 1 ; Ylk Sayymyz, Veri türü: dword
NTwo: resd 1 ; Ykinci Sayymyz, Veri Türü: dword

SEGMENT code USE32
GLOBAL _DllMain

_DllMain: mov eax, 1
retn 12 ;

;Private Declare Function asmADD Lib "ADD.dll" (ByVal number1 As Long, ByVal number2 As Long) As Long 'bu visual basic programymyzda toplama i?lemini assembly ile hazyrlady?ymyz dll dosyasyny kullanarak gerçekle?tirmek için kullanaca?ymyz fonksiyon. Yleride bunu tekrar i?leyece?iz.


GLOBAL ADD
ADD:
enter 0, 0
PUSH EBX

mov eax,[ebp+8] ; Ylk de?eri alyyoruz.
mov [NOne],eax

mov eax,[ebp+12] ; Ykinci de?eri alyyoruz
mov [NTwo],eax

add eax, [NOne]


leave
retn 8 ;sonuç olarak 8 bytelyk bir de?er elde ediyoruz. (1 dword = 4byte * 2)
ENDS ' tahmin edebilece?iniz gibi..

Y?te bu kadar. ?imdi assembly kodumuzu compile etmemiz gerekiyor. Bunun için nasm programyna ihtiyacymyz var. Compile i?lemi iki a?amadan olu?uyor. Ylki nasm ile assembly kodunun compile edilmesi, ikinci adym ise compile edilen assembly kodunun visual basic derleyicisi ile dll dosyasyna dönü?türülmesi.
Y:\NASM\nasmw.exe -f coff ADD.asm
Y:\Micros~1\VB98\LINK.EXE /dll /export:ADD /entryllMain asmADD.o

Bu i?lemler esnasynda olu?acak olan
AsmADD.exp, AsmADD.lib, AsmADD.o dosyalaryny dll dosyamyz olu?turulduktan sonra silebilriz.

Sonuç olarak elimizde ADD.DLL adly dosya var. ?imdi bu dosyayy Visual Basic ile kullanalym.

Yeni bir standart exe projesi olu?turun ve Form1'in kod penceresine a?a?ydakileri yazyn;

Private Declare Function ADD Lib "ADD.dll" (ByVal number1 As Long, ByVal number2 As Long) As Long
Private Const constAdd As Integer = 0

'biz bu örnekte kodun uzamamasy için kullanycynyn verdi?i iki sayyyy de?il kendi belirledi?imiz iki sayyyy topluyoruz. Sayylarymyz 578 ve 719

Private Sub Form_Load()
Dim sayi As Long
sayi = Add(578, 719)
MsgBox sayi
End Sub

Bu kadar. Sonuç olarak programymyz bize bir mesaj kutusu üzerinde 1297 de?erini gösterecektir.

Çokda korkulacak bir?ey de?il gördü?ünüz gibi. Assembly dilini visual basic dilinin yapmasy uzun süren hemen hemen tüm i?lemlerde kullanabilirsiniz. Örne?in büyük matematiksel i?lemlerde, grafik efektlerinde veya dosya i?lemlerinde.

Saat ?u an 01:39.. Sanyrym bu yazynyn sona erme saati geldi. Ykinci yazyda (hangisi olur bilemiyorum) Visual Basic ve Assembly dillerini birarada kullanarak dosya i?lemlerini gerçekle?tirmeyi veya grafik dosyalaryna nasyl efekt verebilece?imizi anlataca?ym.. Yyi geceler.
Alıntı ile Cevapla
Cevapla
Arama Etiketleri: , , , ,



Seçenekler


Benzer Konular
Konu Konu Açanlar Forum Cevaplar Güncel Mesajlar
Visual Basic... cunobag Visual Basic & Action script 3 13-11-2008 11:30
Visual Basic İle MSSQL Server 2000 Veritabanı Kullanmak B737 Visual Basic & Action script 0 24-01-2008 02:46
Visual Basic 6.0 GeZeNAsKeR Webmaster Programları 0 17-01-2008 11:41
Visual Basic Celebrian Webmaster Programları 0 22-11-2007 03:37
Visual Basic - 1 kadınca Visual Basic & Action script 4 08-11-2007 12:17


Webmaster web tasarım online reviews ~ Kadınlar blogu ~ Apple iPhone, iPod Touch ( iTouch ) Forum ~ iPhone