Bir Program CPU Tarafından Nasıl Çalıştırılma Durumuna Getirilir?

04:05 ,
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ı

02:18 ,
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ı

06:53 ,
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ı

07:09 , ,
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)...

Assembly ile Sistem Fonksiyonu Çağırma [Linux]

06:50 , , , ,
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]

03:23 , , , ,
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...

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

03:22 , ,
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
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
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...