Delphi’de 64 Bit Programlama | Dm7
Microsoft, Windows 95 ve sonrası Windows sürümlerini 32 bitlik sistemlerde çalışmak için tasarlamıştı. Windows Xp sürümünden itibaren 32 ve 64 bitlik işlemciler için ayrı ayrı Windows sürümleri çıkarılmaya başlandı. Günümüzde kullanılan sistemlerin büyük bir kısmı 32 bitlik iken 64 bitlik sistemler de yaygınlaşmaya başlamıştır.
Günümüzde 32 bitlik sistemlerin yaygın olması sebebiyle Windows programlarının çoğunluğu 32 bittir. Fakat 64 bit programların sayısı da artmaktadır. Bazı programların hem 32 hem de 64 bitlik sürümleri vardır. Kullanıcı kendi sistemine göre gerekli sürümü kurup kullanır. 32 bitlik sistemler sadece 32 bit programları çalıştırabilir, 64 bitlik programları çalıştıramazlar. 64 bit sistemler ise hem 32 bit hem de 64 bit uygulamaları çalıştırabilir. Doğal olarak 64 bitlik sistemlerde 64 bit programlar tam verimli çalışacaktır.
64 bitlik bir sisteme 32 bit Windows yüklenebilir. Fakat 64 bitlik programlar 32 bit Windows üzerinde çalışmaz. 32 bit Windows en fazla 4 GB Ram hafıza kullanabilir. Uygulamalara en fazla 2 GB hafıza verilebilir. 4 GB’dan fazla hafıza kullanılabilmesi için sistem ve kurulu Windows 64 bit olmalıdır.
Windows’da uygulamalar işletim sisteminin bulunduğu sürücüde Program Files dizininin altına kurulur. 64 bitlik Windows’larda 64 bitlik uygulamalar da aynı dizine kurulur. Fakat 64 bitlik Windows’larda 32 bitlik uygulamalar Program Files (x86) dizininin altına kurulur.
86 rakamı 64’den büyük olmasına rağmen 32 bit sistemler x86 olarak da isimlendirilir. Bunun sebebi ilk kişisel bilgisayarlarda intelin işlemcilerinin sonu hep 86 rakamı ile bitmesidir; Intelin ilk 32 bit işlemcisi 80386 dır.
64 bitlik Windows’da Görev Yöneticisi (Task Manager) çalıştırılarak İşlemler listesine bakıldığında 32 bitlik uygulamaların yanında (32 bit) yazıldığı görülecektir.
Delphide 64 bit
Rad Studio’nun Xe2 sürümünden sonra Delphi’ye 32 bit program derlemenin yanına 64 bit derleme yeteneği de eklenmiştir. Böylece Delphi ile geliştirilen uygulamalar istenirse 32 bit ve/veya 64 bitlik olabilir. Bu, Project Manager kısmında Target Platforms kısmında neyin eklenip neyin aktif edildiğine bağlıdır. Bu kısımda normalde sadece 32-bit Windows seçeneği vardır ve bu seçenek (koyudur) aktiftir.
Bunun anlamı uygulama sadece 32 bit derlenecek ve çalıştırılacaktır.
Target Platforms‘a sağ tıklayıp Add Platform… denildiğinde ekrana gelen Select Platform diyalogunda 64-bit Windows seçilerek uygulamaya 64 bit desteği eklenebilir. Altta bulunan “Make the selected platform active” kutusu işaretlenirse eklemenin yanında hem de aktif etme gerçekleşecektir.
Bir uygulamaya birden fazla platform eklenebilir. O anki aktif olan platform için derleme yapılıp çalıştırılacaktır. Bu sebepten o anki sisteme göre aktif edilme yapılmalıdır. 32 bitlik bir sistemde 64 bitlik platform aktif edilse bile çalışmaz.
Bir platforma gerek duyulmuyorsa silinebilir. Bunun için platforma sağ tıklayıp gelen menüden “Remove platform…” demek yeterlidir. Pasif olan platformu aktif etmek için ise aynı menüden “Activate” demek yeterlidir.
Delphide VCL bileşenler yerine Firemonkey seçilirse 32 ve 64 bit platformlarına ek olarak Os X Platformu çıkacaktır. Delphi ile Os X için Firemonkey uygulamaları geliştirilebilmektedir. Derlenen Os X uygulamaları başka bir Mac Os X bilgisayarına internet bağlantısı yapılarak denenip çalıştırılabilir.
64 bit Programlamanın Farklılıkları
Genelde 32 bit programlara sadece 64 bit platform eklenerek doğrudan 64 bite çevrilebilir. Fakat 32 bit bir program 64 bite çevrilirken veri tipindeki farklılıklardan veya sonradan eklenmiş eski 32 bit bileşenlerden dolayı hata verebilir veya hiç 64 bit derleme yapılamayabilir.
64 bit sistemlerde bazı veri tiplerinde verim ve uyum için değişiklikler vardır:
Veri Tipi 32 bit 64 bit
Extended 10 bayt 8 bayt
NativeInt 4 bayt 8 bayt
NativeUInt 4 bayt 8 bayt
Burada NativeInt ve NativeUInt, 32 ve 64 bit sistemlere göre boyutu farklı olan değişken tipleridir. Bir değişken tipinin boyutunu görmek için SizeOf komutu değişkenin tipi ile kullanılır. Örneğin SizeOf(NativeInt)
32 bit sistemlerde Pointer tipleri 32 bittir (4 bayt). 64 bit sistemlerde ise Pointer tipi 64 bittir (8 bayt).
Yukarıdaki değişken tiplerinden dolayı hata çıkması düşük bir ihtimaldir. Fakat 64 bitte Extended değişken tipinde veri tipi boyutu düştüğü için sınırlara dikkat edilmelidir.
Uygulamada 64 bit olmayan eski kütüphane veya bileşen kullanıldığında da hata çıkabilir veya derleme yapılamayabilir. Bu durumda kütüphanenin-bileşenin kodu varsa 64 bite çevirilip yeniden derlenip kurulursa veya yeni 64 bit sürüm elde edilip kurulursa hata ortadan kalkacaktır.
Eğer 64 bit olmayan eski kütüphane veya bileşenin kodu veya yeni sürümü yoksa sadece 32 bit geliştirme yapılabilir.
Uygulamalarda 32-64 Bit Kontrolü
Uygulamalarda 32 bit veya 64 bit sistem kontrolü yapılabilir ve her sistem için farklı kodlar çalıştırılabilir. Bunun için WIN32 ve WIN64 direktifleri vardır. Aşağıdaki örnek kodda 32 bit sistemde farklı 64 bit sistemde faklı mesaj çıkacaktır:
Writeln('Program 32 bit');
Writeln('Program 64 bit');
Yukardaki kod 64 bit bir sistemde deneniyorsa ve 32-64 bit platformların ikisi de eklenmişse hangi platform aktif edilirse ona göre mesaj çıktığı görülecektir.
Delphi Xe2 ile birlikte 32 bit sistemler için CPUX86, 64 bit sistemler için CPUX64 direktifleri de eklenmiştir.
← Delphi’de Registry (Kayıt Defteri) işlemleri Sitedeki dosyalara ulaşılamaması hatası →