Bir program yazılıp derlendikten sonra nasıl çalışma aşamasına getirilmektedir? Eğer çalıştırma ortamı bir işletim sisteminin yüklü olduğu bir ortam değilse bizim programı bir biçimde reset vektöründen itibaren o ortamın belleğine (Ram) yüklememiz gerekir. Tipik olarak mikrodenetleyici (microcontroller) ile çalışmalar bu biçimde yürütülmektedir. Bir mikrodenetleyicinin içerisinde bir CPU'nun yanı...
Döndürme (Rotate) Komutları

Döndürme işlemi için C/C++ dillerinde özel bir operatör bulundurulmamıştır. Döndürme işlemi ötelemeye benzemektedir. Ancak ötelemede kaybedilen bit döndürme işleminde diğer tarafı beslemede kullanılır. Örneğin döndürme işlemlerini özetle aşağıdaki resimde olduğu gibi gösterilebiliriz:
Döndürme...
32 Bit Intel Ailesinde çağırma biçimi (calling convention) kavramı

Fonksiyonların çağrılması ve geri dönüş değerlerinin alınması konusundaki belirlemelere çağırma biçimi (calling convention) denilmektedir. Derleyicilerin bir fonksiyonu derlerken stack'e parametreleri hangi sirayla push edeceginin veya parametrelerin kullanılacak register'a hangi sıraya göre atılacağı...
API ve ABI Kavramları Üzerine

Yazılımların tüm mimarilerde çalışması ve geriye doğru uyumlu (backward compatibility) olması en çok istenen özelliklerdir. Geliştirilen yazılımın belirli bir dağıtım veya mimariye bağımlı olmayıp, taşınabilir olması büyük kolaylık sağlayacaktır. Sistem seviyesinden bakıldığında taşınabilirlikle ilgili...
Fonksiyon Çağrılarında Yazmaç Değerlerinin Korunması
Sembolik makine dilinde bir fonksiyonu CALL ettikten sonra akış geri döndüğünde yazmaçların durumu ne olacaktır? CALL edilen fonksiyon yazmaçların değerlerini değiştirmiş olabilir. Bu durumda CALL etmeden önce çağıran fonksiyon yazmaçlarda belli değerleri saklamışsa CALL işleminden sonra artık o değerlerin yazmaçlarda olmayabileceğini göz önüne almalıdır. İşte bu konuda da çağıran fonksiyonla (caller)...
32 Bit Windows Sistemler için "Hello World" Assembly Programı

Tamamen sembolik makine diliyle yazılmış ekrana "Hello World" yazısını çıkartan temel assembly programı Windows'ta şöyle yazılabilir:
Aşağıdaki resimde görüleceği gibi ilk adım olan yazılan kodu 1 numaralı komutta olduğu gibi nasm ile derlenebilir:
Buradan ürün olarak HelloWorld.obj...
Assembly ile Sistem Fonksiyonu Çağırma [Linux]

Assembly programı içinden Linux sistem fonksiyonları çağrılırken uyulması gereken standart işlemler vardır. Linux System Call Table 'da görülebileceği gibi hangi register'ları set etmemiz gerektiği, parametreleri hangi register aracılığıyla göndermemiz gerektiği bilinmesi gerekmektedir....
Assembly içinden C Fonksiyonu Çağırma [Linux]

Linux'te assembly içinden C fonksiyonu çağrılacak ise yapılması gereken temel işlemler aşağıdaki örnekte anlatıldığı gibidir:
Çağrılacak fonksiyon .text alanında extern bildirimi yapılması gerekmektedir.
Fonksiyon çağrılmadan önce ise parametreler soldan sağa stack'e push edilmesi gerekmektedir.
sample.asm...
Assembly' de yazılıp derlenen bir fonksiyonu Windows'ta çağırma

Windows sistemlerde assembly' de yazdığımız bir fonksiyon C içerisinden aşağıdaki gibi çağrılır;
Derleme işlemi yapıldıktan sonra oluşan .obj dosyasını Visual Studio'da açılan C projesine dahil edelim.
Aşağıdaki gibi örnek bir kod derleme&link işleminin ardından çalıştırıldığında...
32 Bit Linux Sistemler için "Hello World" Assembly Programı

Linux sistemlerinde assembly diliyle "Hello World" programının kodu aşağıdaki gibidir.
1 numaralı kod parçası ekrana yazı yazan,
2 numaralı kod parçası ise programdan çıkış işleminin yapıldığı kısımdır.
Linux’taki merhaba dünya programı Windows’takine göre daha sadedir. Bunun nedeni...
Assembly ile program yazma

Assembly?
Assembly dili işlemcilerin instruction setlerinde yer alan komutları ve registerları kullandıklarından dolayı donanım bağımlı bir dildir. Intel işlemciler için yazılan bir assembly programının ARM işlemcilerde çalışma şansı yoktur. Bu nedenle PC'lerde en çok kullanılan işlemci olan...
Çok Kullanılan Intel x86 Debuggerlar

Bir programı çalışırken incelemek için kullanılan yazılımlara debugger denilmektedir. Debugger'lar genellikle hata bulma amacıyla kullanılırlar. (Etimolojik olarak debug "hata ayıklama" anlamına gelmektedir. "Bug" sözcüğünden türetilmiştir.) Debugger'lar dinamik analiz araçlarındandır. Bir programı...
Çok Kullanılan Intel x86 Assembly Derleyicileri
07:01
Assembly

Sembolik makine dillerinin bir standartı olmadığı için her derleyicinin kendine has bir kural seti bulunmaktadır. Bu nedenle sembolik makine dili derleyicileri arasında önemli farklılıklar bulunabilmektedir. Örneğin tüm 8086 işlemci ailesi aynı komut yapısına sahip olsa da bu komutların...
msg db 'Hello World!..' , 10
00:42
Others

Anadolu'da Köyün Delisi Olmak
Sevdiği işe tutkuyla sarılan AHMET ULUÇAY (kendisi memleketinde köyün delisi olarak görülürmüş ta ki ünlü olana kadar ) kadar yaptığım işlere bağlı olamasam da yazılım geliştirme alanında iyi olmaya çalışıyorum. Bu kapsamda assembly öğrenmeye...