вот файл ASM ( FASM ) :
format ELF
public _start
extrn kernel_main
section ".text" executable
_start:
movzx edx, dl
push edx
push esi
push ebx
lgdt [gdtr]
call kernel_main
@@:
;cli
;hlt
jmp @b
section ".data" writable
gdt:
dq 0
dq 0x00CF9A000000FFFF
dq 0x00CF92000000FFFF
gdtr:
dw $ - gdt
dd gdt
А вот C с функцией к которой нужно обратиться:
typedef struct {
unsigned long long base;
unsigned long long size;
} BootModuleInfo;
void kernel_main(char boot_disk_id, void *memory_map, BootModuleInfo *boot_module_list) {
char *screen_buffer = (void*)0xB8000;
char *msg = "Hello world!";
unsigned int i = 24 * 80;
while (*msg) {
screen_buffer[i * 2] = *msg;
msg++;
i++;
}
}
Вроде бы все ок. Имена совпадают. Но вот что выдает линкер на команду
" ld -T script.ld -o bin\kernel.bin src\kernel\main.o src\boot\startup.o "
...In function 'start':
...undefined reference to 'kernel_main'
...*** [all] Error 1
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.