1
Das Wiki / Re:Hexadezimal zahlen mit LL (Global Descriptor Table)
« am: 10. July 2010, 03:21 »
Ahhh
Vielen Dank, das hat mir sehr weiter geholfen!
Mfg aMen
Vielen Dank, das hat mir sehr weiter geholfen!
Mfg aMen
04. May 2024, 18:01
Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.
0xffffLL
0xffffffLL
.text : {
*([b].[/b]multiboot)
*(.text)
}
/* Bei _start soll die Ausfuehrung losgehen */Eins zu eins übernommen.
ENTRY(_start)
/*
* Hier wird festgelegt, in welcher Reihenfolge welche Sektionen in die Binary
* geschrieben werden sollen
*/
SECTIONS
{
/*
* . ist die aktuelle Position in der Datei. Wir wollen den Kernel wie gehabt
* an 1 MB laden, also muessen wir dort die erste Sektion hinlegen
*/
. = 0x100000;
/*
* Der Multiboot-Header muss zuerst kommen (in den ersten 8 kB).
* Die Standardsektionen einfach hintereinander weg einbinden.
*/
.text : {
*(multiboot)
*(.text)
}
.data ALIGN(4096) : {
*(.data)
}
.rodata ALIGN(4096) : {
*(.rodata)
}
.bss ALIGN(4096) : {
*(.bss)
}
}
#include"kprintf.h"
void inti(){
kprintf("hallo");
}
void kprintf(char mainchar[])
{
char *video=(char*) 0xb8000;
int i;
for(i=0;i<=sizeof(mainchar);i++)
{
video[i*2]=mainchar[i];
video[i*2+1]=0x07;
}
}
Das lässt sich Kompilieren, aber sobald ich es per qemu und Grub booten will, bekomm ich die fehlermeldung "Error 13: invalid or unsupported executable format" sobald ich versuche den Kernel zu laden.//Sobald ich anstatt :
kprintf("hallo");
//dass schreibe:
char mainchar[]="hallo";
kprintf(mainchar);
//funktioniert es