2009-05-21 20 views
5

Çıplak CPU (x86), 32 bit korumalı modda çalışan ve işletim sistemi olmayan bir donanım hata ayıklama aracı yapıyorum. Zaman kısıtlamaları nedeniyle, aracı x86 montajında ​​yazmam. Ada dilini severim (ama onunla deneyimsizdir) ve bu proje için Ada yerine C'yi kullanmanın ilginç olabileceğini düşündüm.Ada ve montaj

C ile, klavye I/O gibi temel şeylere erişmek veya ekranda metin görüntülemek için BIOS'a erişmek için satır içi montajı veya montajda yazılı alt programları arayabilirsiniz. Ada'nın benzer bir yeteneği var mı? Ve eğer öyleyse, montaj yöntemlerini çağırmak ve onlarla bağlantı kurmak için herhangi bir kaynak veya öğretici var mı?

+2

Neden bir işletim sistemi kullanma konusunda ısrar ediyorsunuz? Tüm donanıma erişme (ekran, klavye vb.) Zor, neden işletim sistemiyle ilgilenmesine izin vermiyorsunuz? Linux ücretsizdir ;-) – lothar

+0

Neden ısrar ediyorum? Eh, ben donanım yazılımı hata ayıklama, Linux yazılımı yazmıyoruz! : p PCI veri yolu sıfırlamalarını yapmalı ve yapılandırma kayıtlarını değiştirmem gerekir. Linux düşük seviyeli çalışma ile pek fazla şey yapmadım, ancak Windows dünyasında, eşlik hatası (PERR #), sistem hataları (SERR #) ve PCI veri yolu sıfırlama (RESET #) felaket olaylarıdır. –

cevap

5

Ada içi montaj kodunu Ada'da kullanabilirsiniz. (Aşırı yüklenmiş) Asm işlevini sağlayan System.Machine_Code paketini kullanmanız gerekir.

+0

Teşekkürler! Bu hile yapmalı! –

2

GNAT Reference kılavuzu Machine Code Insertions üzerinde bir bölüme sahiptir ve GNAT'a özgü olsa da, farklı bir derleyici kullansanız bile nasıl çalıştığı konusunda genel bir fikir edinebilmelidir.

+0

Teşekkürler, ücretsiz araçlar kullanmak istediğim için GNAT'a bağlı kalacağım. Sonuçta bir hobi projesi. –