Я использую Arch (6.17.5-arch1-1).
Мне понравился ваш проект, но проблемы возникли ещё при разархивации компилятора, архив либо битый, либо я не знаю что. Но не беда, я загрузил компилятор с aur(вот команда если кому-то нужна yay -S i386-elf-gcc) и столкнулся с непроглядной чередой ошибок, я их попытался исправить вот небольшой лог того, что я делал:
/src/api/api.c: add -
#include "../libs/asm.h"
#include "../drivers/display.h"
#include "../IDT_PIC.h"
-
/src/api/api.c:50 unsigned char* result = get_ebx(); -> unsigned char* result = (unsigned char*)get_ebx();
/src/api/api.c:70 unsigned char* result = get_ebx(); -> unsigned char* result = (unsigned char*)get_ebx();
/src/drivers/progloader.h:
#define INCL_DRIVER_PROGLOADER
#ifndef INCL_DRIVER_PROGLOADER
->
#ifndef INCL_DRIVER_PROGLOADER
#define INCL_DRIVER_PROGLOADER
/src/drivers/progloader.h:17 int progloader_run_program(int program_index); -> int progloader_run_program(unsigned int program_index);
/src/drivers/ata.c add -
#include "../libs/asm.h"
-
/src/drivers/ata.c:153 ata_read(256, buffer); -> ata_read(256, (unsigned short*)buffer);
/src/drivers/display.c add -
#include "../libs/asm.h"
-
/src/drivers/drivers.c add -
#include "PIT.h"
#include "progloader.h"
-
/src/drivers/keyboard.c -
#include "../libs/asm.h"
-
/src/drivers/PIT.c add -
#include "../libs/asm.h"
-
/src/drivers/progloader.c add -
#include "../libs/io.h"
-
/src/drivers/progloader.c:25 return -1; -> return;
/src/libs/ata.c add -
#include "asm.h"
-
/src/libs/ata.c in_edx(buffer); -> in_edx((int)buffer);
/src/libs/io.c:36 -
unsigned char result = 0;
in_ebx(&result);
syscall_display(4);
return result;
->
int result = 0;
in_ebx(result);
syscall_display(4);
return (unsigned char)result;
-
/src/libs/programs.c add -
#include "asm.h"
#include "io.h"
-
/src/libs/programs.c:40 return -1; -> return;
/src/libs/string.c:57 string_turn_over(&string, s_ptr, &result); -> string_turn_over((unsigned char*)string, s_ptr, (unsigned char*)result);
/src/libs/string.c:197 long p = ptr; -> long p = (long)ptr;
Но появилась проблема, у вас в файле /src/drivers/drivers.c есть функция:
void drivers_init_late(){
// Проверка подключен ли диск
if (ata_driver_find_disks() == -1){ // Находится в ata.c
// Нет, то паника
kernel_panic("drivers_init_late", "Not Found ATA Disk!"); // Находится в kernel.c
}
// Если подключен то работа продолжается
progloader_init();
}
Так как ".c" файлы инклюдить нехорошо, я не понимаю как это работает у вас, по этому я закомментировал их, но после ошибок сборки программ я сдался.
Я использую Arch (6.17.5-arch1-1).
Мне понравился ваш проект, но проблемы возникли ещё при разархивации компилятора, архив либо битый, либо я не знаю что. Но не беда, я загрузил компилятор с aur(вот команда если кому-то нужна yay -S i386-elf-gcc) и столкнулся с непроглядной чередой ошибок, я их попытался исправить вот небольшой лог того, что я делал:
/src/api/api.c: add -
#include "../libs/asm.h"
#include "../drivers/display.h"
#include "../IDT_PIC.h"
-
/src/api/api.c:50 unsigned char* result = get_ebx(); -> unsigned char* result = (unsigned char*)get_ebx();
/src/api/api.c:70 unsigned char* result = get_ebx(); -> unsigned char* result = (unsigned char*)get_ebx();
/src/drivers/progloader.h:
#define INCL_DRIVER_PROGLOADER
#ifndef INCL_DRIVER_PROGLOADER
->
#ifndef INCL_DRIVER_PROGLOADER
#define INCL_DRIVER_PROGLOADER
/src/drivers/progloader.h:17 int progloader_run_program(int program_index); -> int progloader_run_program(unsigned int program_index);
/src/drivers/ata.c add -
#include "../libs/asm.h"
-
/src/drivers/ata.c:153 ata_read(256, buffer); -> ata_read(256, (unsigned short*)buffer);
/src/drivers/display.c add -
#include "../libs/asm.h"
-
/src/drivers/drivers.c add -
#include "PIT.h"
#include "progloader.h"
-
/src/drivers/keyboard.c -
#include "../libs/asm.h"
-
/src/drivers/PIT.c add -
#include "../libs/asm.h"
-
/src/drivers/progloader.c add -
#include "../libs/io.h"
-
/src/drivers/progloader.c:25 return -1; -> return;
/src/libs/ata.c add -
#include "asm.h"
-
/src/libs/ata.c in_edx(buffer); -> in_edx((int)buffer);
/src/libs/io.c:36 -
unsigned char result = 0;
in_ebx(&result);
syscall_display(4);
return result;
->
int result = 0;
in_ebx(result);
syscall_display(4);
return (unsigned char)result;
-
/src/libs/programs.c add -
#include "asm.h"
#include "io.h"
-
/src/libs/programs.c:40 return -1; -> return;
/src/libs/string.c:57 string_turn_over(&string, s_ptr, &result); -> string_turn_over((unsigned char*)string, s_ptr, (unsigned char*)result);
/src/libs/string.c:197 long p = ptr; -> long p = (long)ptr;
Но появилась проблема, у вас в файле /src/drivers/drivers.c есть функция:
void drivers_init_late(){
// Проверка подключен ли диск
if (ata_driver_find_disks() == -1){ // Находится в ata.c
// Нет, то паника
kernel_panic("drivers_init_late", "Not Found ATA Disk!"); // Находится в kernel.c
}
// Если подключен то работа продолжается
progloader_init();
}
Так как ".c" файлы инклюдить нехорошо, я не понимаю как это работает у вас, по этому я закомментировал их, но после ошибок сборки программ я сдался.