OSDev

для всех
Текущее время: 27 апр 2024, 19:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: линковка ядра
СообщениеДобавлено: 12 июн 2013, 09:27 

Зарегистрирован: 26 сен 2012, 21:14
Сообщения: 26
Есть С-код который должен выводить строку на екран
Код:
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 КБ | Просмотров: 8809 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: линковка ядра
СообщениеДобавлено: 12 июн 2013, 14:08 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
GCC компилирует исходник в 32-битный код. А где же перевод процессора в защищённый режим?

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: линковка ядра
СообщениеДобавлено: 12 июн 2013, 16:08 

Зарегистрирован: 26 сен 2012, 21:14
Сообщения: 26
а заставить его генерировать 16-битный код никак нельзя?
не хочу ещё в PM уходить


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: линковка ядра
СообщениеДобавлено: 12 июн 2013, 16:49 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Насколько помню нет.
16 бит код могут компилировать OpenWatcom, Borland C++ 5.0, MSC++ до 4 версии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: линковка ядра
СообщениеДобавлено: 13 июн 2013, 02:51 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Ещё TurboC.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB