can someone explain me please, how to compile this HelloWorld-OS under Cygwin or with DJGPP and how to debug it with GDB on Bochs?
I have only 3 files:
mykernel.c
Code: Select all
int main(int argc, char *argv[]) {
// Pointer zum Videospeicher
char *video = (char*) 0xB8000;
// String zum Ausgeben
char *hello = "Hello World";
// Zuerst den Speicher leeren
for (video += 4000; video !=(char*)0xB8000; video--)
{
*video = 0;
}
// String ausgeben
while (*hello) {
*video = *hello;
video++;
*video = 0x07;
video++;
hello++;
}
// Main Loop
while(1);
return 0;
}
Code: Select all
global loader
extern _main
FLAGS equ 0
MAGIC equ 0x1BADB002
CHECKSUM equ -(MAGIC + FLAGS)
section .text
align 4
MultiBootHeader:
dd MAGIC
dd FLAGS
dd CHECKSUM
loader:
mov esp, 0x200000
push eax
push ebx
call _main
cli
hlt
Code: Select all
ENTRY (loader)
SECTIONS
{
. = 0x00100000;
.text :
{
*(.text)
}
.rodata ALIGN (0x1000) :
{
*(.rodata)
}
.data ALIGN (0x1000):
{
*(.data)
}
.bss :
{
*(.bss)
}
}
Code: Select all
gcc.exe -ffreestanding -o mykernel_c.o -c mykernel.c -g
c:/djgpp/tmp/ccXA7t2i.s: Assembler messages:
c:/djgpp/tmp/ccXA7t2i.s:6: Error: Unknown pseudo-op: `.def'
c:/djgpp/tmp/ccXA7t2i.s:6: Error: Unknown pseudo-op: `.val'
c:/djgpp/tmp/ccXA7t2i.s:6: Error: Unknown pseudo-op: `.scl'
c:/djgpp/tmp/ccXA7t2i.s:6: Error: ignoring unrecognized symbol type ""
c:/djgpp/tmp/ccXA7t2i.s:6: Error: Rest of line ignored. First ignored character
is `0'.
c:/djgpp/tmp/ccXA7t2i.s:6: Error: Unknown pseudo-op: `.endef'
c:/djgpp/tmp/ccXA7t2i.s:9: Error: Unknown pseudo-op: `.def'
c:/djgpp/tmp/ccXA7t2i.s:9: Error: Unknown pseudo-op: `.val'
c:/djgpp/tmp/ccXA7t2i.s:9: Error: Unknown pseudo-op: `.scl'
mykernel.c:6: Error: Unknown pseudo-op: `.endef'
mykernel.c:7: Error: Unknown pseudo-op: `.def'
mykernel.c:7: Error: Unknown pseudo-op: `.val'
mykernel.c:7: Error: Unknown pseudo-op: `.scl'
mykernel.c:7: Error: ignoring unrecognized symbol type ""
mykernel.c:7: Error: Rest of line ignored. First ignored character is `0'.
mykernel.c:7: Error: Unknown pseudo-op: `.endef'
mykernel.c:8: Error: Unknown pseudo-op: `.def'
mykernel.c:8: Error: Unknown pseudo-op: `.val'
mykernel.c:8: Error: Unknown pseudo-op: `.scl'
mykernel.c:8: Error: ignoring unrecognized symbol type ""
mykernel.c:8: Error: Rest of line ignored. First ignored character is `0'.
mykernel.c:8: Error: Unknown pseudo-op: `.endef'
mykernel.c:15: Error: Unknown pseudo-op: `.def'
mykernel.c:15: Error: Unknown pseudo-op: `.val'
mykernel.c:15: Error: Unknown pseudo-op: `.scl'
mykernel.c:15: Error: ignoring unrecognized symbol type ""
mykernel.c:15: Error: Rest of line ignored. First ignored character is `0'.
mykernel.c:15: Error: Unknown pseudo-op: `.endef'
mykernel.c:16: Error: Unknown pseudo-op: `.def'
mykernel.c:16: Error: Unknown pseudo-op: `.val'
mykernel.c:16: Error: Unknown pseudo-op: `.scl'
mykernel.c:16: Error: ignoring unrecognized symbol type ""
mykernel.c:16: Error: Rest of line ignored. First ignored character is `0'.
mykernel.c:16: Error: Unknown pseudo-op: `.endef'
mykernel.c:17: Error: Unknown pseudo-op: `.ln'
mykernel.c:19: Error: Unknown pseudo-op: `.ln'
mykernel.c:21: Error: Unknown pseudo-op: `.ln'
mykernel.c:29: Error: Unknown pseudo-op: `.ln'
mykernel.c:32: Error: Unknown pseudo-op: `.ln'
mykernel.c:38: Error: Unknown pseudo-op: `.ln'
mykernel.c:45: Error: Unknown pseudo-op: `.ln'
mykernel.c:50: Error: Unknown pseudo-op: `.ln'
mykernel.c:53: Error: Unknown pseudo-op: `.ln'
mykernel.c:56: Error: Unknown pseudo-op: `.ln'
mykernel.c:59: Error: Unknown pseudo-op: `.ln'
mykernel.c:65: Error: Unknown pseudo-op: `.ln'
mykernel.c:68: Error: Unknown pseudo-op: `.ln'
mykernel.c:69: Error: Unknown pseudo-op: `.ln'
mykernel.c:70: Error: Unknown pseudo-op: `.def'
mykernel.c:70: Error: Unknown pseudo-op: `.val'
mykernel.c:70: Error: Unknown pseudo-op: `.scl'
mykernel.c:29: Error: Unknown pseudo-op: `.endef'
mykernel.c:30: Error: Unknown pseudo-op: `.def'
mykernel.c:30: Error: Unknown pseudo-op: `.val'
mykernel.c:30: Error: Unknown pseudo-op: `.scl'
mykernel.c:30: Error: Unknown pseudo-op: `.endef'
Daniel