Delphi’de 64 Bit Programlama

İlk ortaya çıkan kişisel bilgisayarda işlemci adresyolu (databus) genişliği 8 bit idi. Yani birbirine paralel 8 hatta bir seferde bir bayt (8 bit) bilgi iletilebiliyordu. Teknolojinin gelişmesi ile sırasıyla 16, 32 ve 64 bitlik sistemler ortaya çıktı.

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.

32-bit Windows

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.

Select Platform

32-64 bit Windows

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.

Platform menü

Not 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:

Program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

Begin
 {$IFDEF WIN32}
  Writeln('Program 32 bit');
 {$ENDIF}
 {$IFDEF WIN64}
  Writeln('Program 64 bit');
 {$ENDIF}
 Readln;
End.

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.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s