Yazdığım Kod Sorunsuz Çalışır Mı?

Merhabalar,

Biliyorum,forum genelde Python için kullanılıyor ancak C++ ile ilgil bir sorum olacaktı.Cevaplarsanız sevinirim.

void yaz (char * str) 
{ 
    static unsigned short * VideoMemory = (unsigned short *) 0xb8000; 
    
    for (int i = 0; str [i]! = '\ 0'; ++ i) { 
        VideoMemory [i] = (VideoMemory [i] & 0xFF00) | str [i]; 
    } 
    
}
extern "C" void kernelMain (void * multiboot_structure, uint32_t magicnumber) 
{ 
    printf ("Hello"); 
    while (1); 
}

Bu kod,monitörün sol üstüne yazıyı yazabilir mi?

Bu kodu bir işletim sistemi gibi çalıştırmak için,bu kodları nasıl bin veya iso uzantısına çevirebilirim? Önyükleyici olarak ne önerirsiniz?

https://www.youtube.com/watch?v=cQPrtTsM7Zg şu video işiniz yarayabilir ve işletim sistemi yapmaya geri dönmüşşünüz :grinning:adı ne olacak

Hangi monitorun?

Isletim sistemi gibi calistirmak ne demek?

Isletim sistemleriyle bin veya iso uzantilarinin herhangi bir alakasi yok (veya nasil bir alakalari oldugunu dusunuyorsun?). Bootable disk mi yaratmak istiyorsun?

Neyi, nereye onyuklemeye calisiyorsun?

Bootloader diyorsan cok fazla alternatifin yok zaten. Kullanmayabiliyorsan kullanmayarak basla.

Ekran işte?

Başka bir programa gerek kalmadan çalışabilcek.

VirtualBox gibi sanal makineler üzerinde çalışabilsin istiyorum.

GRUB falan demenizi bekliyordum.Yazdığım program kendi başına “Hello” yazabilsin istiyorum.

Pek sayılmaz.Kendi elektronik aracımı yaptım.Ona bir program geliştiriyorum.

.efi dosyasına çevirebilir seniz önyüleyebilirsiniz


Ama efi dosyaları nasıl geliştirilir bilmiyorum.

1 Beğeni

Butun ekranlarda/monitorlerde calismaz cunku bu soyutlamanin altinda is yapiyorsun. x86 mimarili ve hatta BIOS modunda acilmis bir PC’ye baglaman gerekebilir monitoru.

GRUB’dan bahsinden, isletim sistemlerinin de baska bir programa gerek kalarak calistiklarini bildigini varsayiyorum. Ama anlamadim ne demek istedigini, okey.

Ve bu makinelerde isletim sistemi yoksa bootable disklerden acmak zorundasin. iso ve bin formatlari bu disklerin sanal makineye tanitilmak icin kullandigi formatlar. C++ veya isletim-sistemi-gibi programlarla pek bir alakasi yok malesef, ayri arastirmak lazim. (Ben bilmiyorum, ustelik sanal makinelerin boot sekanslari nasil onu da bilmiyorum.)

Tahmin ettim. Benim dedigim GRUB’dan daha kolay, hatta GRUB kullanmanin ongereksinimi olabilir.

Bu arada bootloader kullanacaksan onyukleme yerine yukleme veya zincirleme yukleme (chainload) yapmani tavsiye ediyorum, onyukleme plug-in gibi bir sey.

1 Beğeni

Bunu sonradan gordum.

Kendi elektronik aracini yaptiysan mimarisinden bahsetmen lazim. b8000 adresine yazan C++ kodu hangi mimarinin hangi instruction’larina donusuyor, bu instruction’larin neden olduklari yazma (var ise) mimaride hangi elemanlari tetikleyerek ne yapmalarini sagliyor bilmemize imkan yok.

Araç rasbberry ile çalışacak arkadaşım kartı vereceğini söyledi.Henüz o tarafı taslak ama yüksek ihtimal kart edinemeyeceğim için proje yine suya düşecek.Cevaplarınız ve ilginiz için teşekkür ederim.

Raspberry mimarisi cok farkli. B000:0000 adresinde mode 03h yazi buffer’i yok cunku mode 3 yok. Hatta B000:0000 adresi de yok. UEFI/BIOS yok, onden GPU calisip kontrolu CPU’ya birakiyor. GRUB yok, bootloader kullanan gormedim. ARM mimari.

1 Beğeni

ARM mimariyi kodlayan bir dil yok galiba? Birisi ARM kodlayabilen dil yapabilirsiniz demişti.

Nasıl yani?

Telefon işlemcileri genelde arm64(aarch64) mimarisinde.

Assembly var diye biliyorum.Ki o da zor bir dil.

https://www.technopat.net/sosyal/indir/ocbuilder.332/ maciniz varsa efi oluşturmak için bu işinizi görür

Assembly tek bir dil degil.

Bildigim butun diller arm’a build cikabiliyor.