C ile yazılan kodu boot etmek hk

Merhaba;
İşletim sistemlerinin mantığını daha iyi kavramak için yazdığım bir C kodunu boot (Bilgisayar açılırken başka bir programa ihtiyaç duymadan işlemcide çalıştırmayı kast ediyorum.) etmek istiyorum. Bunu nasıl yapabilirim. İnternette bağızı kaynaklar var lakin bir çoğu Assembly dili ile ekrana yazı yazdırmak hakkında.
Ben ise C veya C++ ile yazdığım programı boot etmek istiyorum.

Kendi tahminimce;
C kodunu (herhangi bir kütüphaneye bağımlı olmadan) kullandığım işlemci mimarisine göre binary koduna dönüştürmek. Ama emininki bu kadarla bitmiyordur.

Yardımcı olursanız sevinirim.

Sanırım konuyla ilgili kullanıcılar:
@aib @EkremDincel @coderistan


zaten buna benzer konu açılmıştı

Konuyla ilgili kullanicilari sanmana gerek yok. Yazini herkese yaz, ilgilenen gelir zaten.

2 Beğeni

Bu konuda bilgili olanları etiketlersem daha hızlı geri dönüş alırım diye düşünmüştüm.
@aib

Böyle bir konu olduğunu bilmiyordum.
Ve o konuda aradığım bilgileri bulamadım.

GRUB gibi önyükleyici kullanmanız gerekiyor.

Kendi merhaba fonksiyonunuzu yazarak işe başlayın.

Dogru dusunmussun. Etiketleri gormeden once cevabi yazmaya baslamistim. Silip yukaridaki cevabi yazmasam bi 10-15 dakka daha surerdi. (Araya baska is girerse de saatler)

1 Beğeni

Zekânıza hayranım :slightly_smiling_face:

3 Beğeni

Kendi merhaba dünya kodumu C++ ile hazırlamıştım, şöyle bir konu açmıştım, orada da bayağı bi bilgi vardı.

2 Beğeni

Yazdığınız kod 3 satırlık bir “Merhaba dünya!” kodundan farklı. Sıradan bir printf() fonksiyonu kullanmamışsınız. İşin içine bellek yönetimini de katmışsınız.

Benim asıl takıldığım şey programı boot edilebilecek şekilde yazmakta.

Yani ben

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}

şeklinde bir kod yazıp bunu boot edemem.

Amacım bunu boot edebilecek şekilde yazmak.

Benim yazdığım kod çalışacaktır, bellek yönetimi yok orada, monitörün neresine yazacağını gösteriyor.

1 Beğeni

Bilgi seviyesini bilmedigim icin ufak bir ifade hatasi mi yoksa daha buyuk bir bilgi eksikligi mi bilemiyorum, ama:

Makine koduna derlenmis programlarin hepsi boot edilebilir. Edildiklerinde duzgun calismayabilirler, o ayri.

Bu arada hangi boot surecinden bahsettiginizi yazmamissiniz. x86 BIOS mu? amd64 UEFI mi? Raspberry Pi mi?

1 Beğeni

64bit AMD bir masaüstü bilgisayarda test etmek istiyorum.

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}

Yani ben bu kodu makine koduna derlersem 64bit AMD bir masaüstü bilgisayarda boot edebilir miyim?

Anlamaya çalıştığım şey işletim sistemlerinin mantığı. Sonuçta işletim sistemleri 0 ve 1’lerle kodlanmıyor. İşin içine C ve C++ gibi diller de dahil oluyor. Ben de bu dilleri de kullanarak nasıl Windows’a ihtiyaç duymadan çalışabilecek bir program yazabileceğimi öğrenmek istiyorum.

pek c bilmiyorum ama buna bakabilirsiniz https://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/

1 Beğeni

Size konunun linkini atmıştım, sadece oradaki kod çalışır. Sizin yaptığınız stdio kütüphanesini kullanıyor, onu nasıl tedarik etmeyi planlıyorsunuz?

Kendi merhaba dünya fonksiyonunuzu yapmanızı da söyledim, linkte o da var.

1 Beğeni

BIOS modunda mi, UEFI mi?

C koduna gelmeden once boot mekanizmasini incelemen lazim.

https://wiki.osdev.org/Getting_Started

64bit AMD bir masaustu bilgisayarin makine koduna derlersen evet.

Calismasini istiyosan boot ettigin ortamda calisan bir printf implementasyonuna ihtiyacin var. Bi de return'un return edecegi yer yok.

1 Beğeni

Bir gün bu linki paylaştığım için gururluyum diyebilirsin umarım.

Peki nasıl derleyeceğimi nereden öğrenebilirim?

Ingilizcesini bir arama motoruna yazabilirsin.