2009-03-20 9 views
6

Visual C++ kullanarak bir x86 makinesi için yerleşik bir çekirdek oluşturmak istiyorum. Derlemek için bazı C ve derleme kod dosyalarım var ve hepsini GRUB gibi bir Multiboot bootloader ile uyumlu bir şekilde birbirine bağlamak istiyorum.Visual Studio'yu kullanarak bir çekirdek resmi nasıl oluştururum?

+0

MSVC yolunu aşmak istediğinizden gerçekten emin misiniz? Bu harika bir derleyici ama GCC/MingW –

+0

ile GCC/MinGW'nin de PE yürütücüler üreteceğini düşünüyorum. Her iki ortamda da ELF için gerekli değişiklikleri yapmalıyım. VS kullanmak için böyle bir zevk, bence tercih ederim. –

cevap

6

OSDev özellikle Kaushik'in Srenevasan en blogentries (tırtıl gibi) çoklu önyükleme bazlı BootLoaders'in tarafından yüklenecek şekilde tasarlanmıştır PE çekirdeklerin konuda bağlantıları olan bazı bilgiler sağlayabilir bir wiki entry on Visual Studio sahiptir.

büyük, geniş vuruş Birkaç şey bilmen gereken: çoklu önyükleme başlığında

  • , sen AOUT kludge kullanmak gerekir.
  • Bağlayıcıya/BASE: 0x100000 değişkenini belirtmeniz gerekir, böylece son ikili kod, önyükleyicinin nereye yerleştirileceğini temel alır.
  • Kernel'in giriş noktanız (genellikle 'kmain' olarak adlandırılır) üzerinde __declspec(noreturn) olmalıdır ve geri dönmek yerine __asm { hlt } yapmanız gerekir.
+0

Kopyala-yapıştır burada da çalışmıyor, ancak hatayı işaret ediyor: "... kernels kullanarak% 5F03.html" gibi görünüyor, ancak "... kernels using_03.html" olmalıdır. –

+0

Nedenini bilmiyorum, ama kopyalayıp adres çubuğundan buraya yapıştırıyorum ve düzenlediğimde edebi bir '_' var - SO her ne sebeple olursa olsun onu değiştiriyor gibi görünüyor. –

+0

Tamam, SO Ekibine bir e-posta gönderdim ve bir bağlantı oluşturmanın başka yolları olduğunu belirttiler, bu yüzden onu çalıştıran birine değiştirdim. –

İlgili konular