LINUX.ORG.RU

memset ошибка...


0

1

Суть такова:

по ссылке http://www.jamesmolloy.co.uk/tutorial_html/index.html из-за простого интереса решил начать делать свою домашнюю ОС.

но остановился на шаге 4, а именно на этом моменте

descriptor_tables.o: In function `init_idt':

descriptor_tables.c:(.text+0x1e2): undefined reference to `memset'

погуглив эту тему, понял я довольно мало. Лишь то, что эта функция заполняет определённое место в памяти необходимым значением. решение я так не нашёл... Может лень, может невнимательность. ещё то, что эта функция есть в заголовке string.h || но gcc лишь плюётся, что такого файла просто не существует, а если вручную, то идёт цепная реакция «отсутствия». (да и вообще мне кажется, что этих файлов и не должно быть в ядре)..

так вот, есть у кого идеи? или же исходник данной функции?

+ по ссылке сказано использовать bochs, но при запуске виснет намертво весь комп.. кое как бывает удаётся убить прогу. вместо этого приходится использовать qemu, но там не задать скорость процессора..

Дебилушка, memset пишется на коленках за пару минут.

anonymous
()

Да, это посильнее Дениса Попова.

geekless ★★
()

тебе это не нужно, поверь. Закончи первый курс хотя бы.

anonymous
()
void *memset(void *s, int c, size_t n)
{
 char *p = (char*)s;
 while(n--)
  *p++ = c;
 return s;
}

не тестировал, возможны очепятки.

drBatty ★★
()

Лишь то, что эта функция заполняет определённое место в памяти необходимым значением. решение я так не нашёл..

void *memset(void *ptr, int c, size_t n)
{
     char *p = (char *)ptr;
     size_t i;
     for (i=0; i<n; ++i) {
        p[i] = c;
     }
     return ptr;
}
nanoolinux ★★★★
()

> descriptor_tables.c:(.text+0x1e2): undefined reference to `memset'

не читая дальше, сразу могу сказать, что компилял ты гцц %)

гцц не соблюдает требований стандарта относительно режима freestanding, о чем в доке прямо и сказано. ещё бзд-шники в своё время грязно ругались в сторону гцц по этому поводу, и не так давно я понял, почему [так грязно], и полностью их поддерживаю :) действительно, проще запилить свой компилятор, чем уговорить гнушников соблюдать стандарт :)

arsi ★★★★★
()
Ответ на: комментарий от arsi

arsi

и не так давно я понял, почему [так грязно], и полностью их поддерживаю :) действительно, проще запилить свой компилятор, чем уговорить гнушников соблюдать стандарт :)

ваш древний как г-но мамонта стандарт не нужен.

drBatty ★★
()
Ответ на: комментарий от drBatty

> оптимизация gcc куда как важнее каких-то мелочей.

> оптимизация gcc

не шути так больше.

arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.