Имеются 3 файла :
loader.s
kernel.c
linker.ld
Результатом компиляции является образ kernel.img
После компиляции образ собирается , после чего я запускаю его на vmware 5.0
Но не работает он как надо - а надо , чтобы он отпечатал на экране Hello world
Ничего вообще не печатает .
Собираю на 3-й федоре
Компиляция :
as -o loader.o loader.s
gcc -o kernel.o -c kernel.c -Wall -Werror -nostdlib -nostartfiles -nodefaultlibs
ld -T linker.ld kernel.o loader.o -o kernel.img
Loader.s :
.global _loader # making entry point visible to linker
# setting up the Multiboot header - see GRUB docs for details
.set ALIGN, 1<<0 # align loaded modules on page boundaries
.set MEMINFO, 1<<1 # provide memory map
.set FLAGS, ALIGN | MEMINFO # this is the Multiboot 'flag' field
.set MAGIC, 0x1BADB002 # 'magic number' lets bootloader find the header
.set CHECKSUM, -(MAGIC + FLAGS) # checksum required
.align 4
.long MAGIC
.long FLAGS
.long CHECKSUM
# reserve initial kernel stack space
.set STACKSIZE, 0x4000 # that's 16k.
.comm stack, STACKSIZE, 32 # reserve 16k stack on a quadword boundary
_loader: mov $(stack + STACKSIZE), %esp # set up the stack
push %eax # Multiboot magic number
push %ebx # Multiboot data structure
call _main # call kernel proper
hlt # halt machine should kernel return
Kernel.c :
nsigned short* const VIDMEM = (unsigned short*) 0xC00B8000;
void clear( void )
{
unsigned short* vp = VIDMEM;
for (int i = 0; i < 80 * 25; i++)
{
*vp++ = 0;
}
}
void print( const char* str )
{
unsigned short* vp = VIDMEM;
while (*str != '\0')
{
*vp++ = (0x0700 | ((unsigned short) *str++));
}
}
void _main( void* mbd, unsigned int magic )
{
clear();
print("Hello world!\0");
while (1);
}
Linker.ld :
ENTRY (_loader)
SECTIONS
{
. = 0x00100000;
.text :
{
*(.text)
}
.rodata ALIGN (0x1000) :
{
*(.rodata)
}
.data ALIGN (0x1000) :
{
*(.data)
}
.bss :
{
_sbss = .;
*(COMMON)
*(.bss)
_ebss = .;
}
}
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Статьи Осваиваем STM32 снизу: часть 4 (2023)
- Форум загрузчики (2016)
- Форум загрузчик (2013)
- Форум Загрузчики (2005)
- Форум загрузчик (2005)
- Форум Загрузчик. (2004)
- Форум Загрузчик GRUB2 (2015)
- Форум Слетел загрузчик (2017)
- Форум Восстановление загрузчика (2019)
- Форум Загрузчик grub (2019)