C++-Kernel mit GRUB — Änderungen 6405 → 6408

Zeile 72: Zeile 72:
 
void Video::write(const char *cp){
 
void Video::write(const char *cp){
 
while (*cp != '\0'){
 
while (*cp != '\0'){
−
put(*ch++); // Für jedes einzelne Zeichen wird put() aufgerufen
+
put(*cp++); // Für jedes einzelne Zeichen wird put() aufgerufen
 
}
 
}
 
}
 
}
Zeile 93: Zeile 93:
 
</cpp>
 
</cpp>
  
−
=== Startup.cpp ===
+
=== Startup.c ===
  
 
Um die Konstruktoren bzw. die Destruktoren von globalen/statischen Objekten aufzurufen (siehe auch [[C++#globale.2Fstatische_Objekte|C++]]), werden diese beiden Funktionen später mit in den Kernel gelinkt und in der asmKernel.asm aufgerufen:
 
Um die Konstruktoren bzw. die Destruktoren von globalen/statischen Objekten aufzurufen (siehe auch [[C++#globale.2Fstatische_Objekte|C++]]), werden diese beiden Funktionen später mit in den Kernel gelinkt und in der asmKernel.asm aufgerufen:
Zeile 133: Zeile 133:
 
global loader ; Unser Einsprungspunkt
 
global loader ; Unser Einsprungspunkt
 
extern main ; main() aus Kernel.cpp
 
extern main ; main() aus Kernel.cpp
−
extern destructors ; aus Startup.cpp
+
extern destructors ; aus Startup.c
−
extern constructors ; aus Startup.cpp
+
extern constructors ; aus Startup.c
 
   
 
   
 
FLAGS    equ 0
 
FLAGS    equ 0
Zeile 173: Zeile 173:
 
  gcc -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -ffreestanding -fno-exceptions -fno-leading-underscore -c -o Kernel.o Kernel.cpp
 
  gcc -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -ffreestanding -fno-exceptions -fno-leading-underscore -c -o Kernel.o Kernel.cpp
  
−
Startup.cpp:
+
Startup.c:
  
−
  gcc -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -ffreestanding -fno-exceptions -fno-leading-underscore -c -o Startup.o Startup.c  
+
  gcc -m32 -nostdlib -fno-builtin -ffreestanding -fno-leading-underscore -std=c99 -c -o Startup.o Startup.c
  
  
Zeile 215: Zeile 215:
 
Nur noch ein kurzer Aufruf von LD, und wir haben unseren fertigen Kernel in der Hand (bzw. Maus ;-)):
 
Nur noch ein kurzer Aufruf von LD, und wir haben unseren fertigen Kernel in der Hand (bzw. Maus ;-)):
  
−
  ld -T link.txt -o kernel.bin asmKernel.o Startup.o Video.o cKernel.o
+
  ld -T link.txt -o kernel.bin asmKernel.o Startup.o Video.o Kernel.o
  
 
Und fertig ist unser Kernel! Wie der Kernel nun mitsamt GRUB auf einer Diskette landet, kann im Artikel [[C-Kernel_mit_GRUB|C-Kernel mit GRUB]] nachgelesen werden, dort verfährt man einfach analog.
 
Und fertig ist unser Kernel! Wie der Kernel nun mitsamt GRUB auf einer Diskette landet, kann im Artikel [[C-Kernel_mit_GRUB|C-Kernel mit GRUB]] nachgelesen werden, dort verfährt man einfach analog.