OSDev
http://osdev.su/

линковка ядра
http://osdev.su/viewtopic.php?f=6&t=753
Страница 1 из 1

Автор:  Stalker [ 12 июн 2013, 09:27 ]
Заголовок сообщения:  линковка ядра

Есть С-код который должен выводить строку на екран
Код:
void write_string( int colour, const char *string )
{
    volatile char *video = (volatile char*)0xB8000;
    while( *string != 0 )
    {
        *video++ = *string++;
        *video++ = colour;
    }
}
c_main()
{
    while(1) write_string( 0, "string" );
}

и есть асм-код который должен передать управление с-коду
Код:
format ELF

public _start
extrn _c_main

section ".text" executable

_start:

        call _c_main
        ;cli
        ;hlt
        jmp 0xFFFF:0

собираю ядро таким макаром
Код:
fasm fkernel.asm fkernel.o
gcc -c -m32 -ffreestanding -o main.o main.c
local\i686-elf\bin\ld --oformat=binary -melf_i386 -T script.ld -o kernel.bin fkernel.o main.o
@pause

и вот кусок бутсектора который грузит ядро в память и прыгает на него
Код:
Kernel:
        mov ax,0000h
        mov es,ax
        mov bx,500h
        mov ch,0            ;номер цилиндра - 0
        mov cl,02h          ;начальный сектор - 2
        mov dh,0            ;номер головки - 0
        mov dl,80h          ;жесткий диск - 80h
        mov al,04h          ;кол-во читаемых секторов 4
        mov ah,02h
        int 13h
        jmp 0000:0500h

Не пойму в чём ошибка, но такое чувство что не туда загружает ядро

Вложения:
Безымянный.png
Безымянный.png [ 8.14 КБ | Просмотров: 8868 ]

Автор:  Yoda [ 12 июн 2013, 14:08 ]
Заголовок сообщения:  Re: линковка ядра

GCC компилирует исходник в 32-битный код. А где же перевод процессора в защищённый режим?

Автор:  Stalker [ 12 июн 2013, 16:08 ]
Заголовок сообщения:  Re: линковка ядра

а заставить его генерировать 16-битный код никак нельзя?
не хочу ещё в PM уходить

Автор:  pavia [ 12 июн 2013, 16:49 ]
Заголовок сообщения:  Re: линковка ядра

Насколько помню нет.
16 бит код могут компилировать OpenWatcom, Borland C++ 5.0, MSC++ до 4 версии.

Автор:  Yoda [ 13 июн 2013, 02:51 ]
Заголовок сообщения:  Re: линковка ядра

Ещё TurboC.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/