Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт окт 24, 2017 1:39 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 20 сообщений ]  На страницу Пред. 1 2
Автор Сообщение
СообщениеДобавлено: Вс дек 23, 2007 8:09 am 
int
bcmp(const void *ptr1, const void *ptr2, int length)
{
char a;
char b;

if (ptr1 == ptr2)
return 0;

if (ptr1 == 0 || ptr2 == 0)
return -1;

while (length)
{
a=*((const char *)ptr1);
b=*((const char *)ptr2);
if (a !=b) return length;

//if (*((char)ptr1)++ != *((char)ptr2)++)
// return length;
ptr1++;
ptr2++;
length--;
}

return 0;
}

ААААААААААА. Вот что хотел сделать автор, делая инкремент к строкам, мне следовало бы догадаться.
Теперь всё собирается


Вернуться к началу
   
СообщениеДобавлено: Вс дек 23, 2007 3:37 pm 
>---------------------------------------------------------
>Libraries for MenuetOS/KolibriOS were successfully built
>---------------------------------------------------------


>/home/vasily/bbb/menuetlibc_new/linuxtools/mld printftest.kex main.o -n -Map printftest.kex.map
>main.o: In function `test':
>main.c:(.text+0xf2): undefined reference to `__stack_chk_fail'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(putchar.o): In function `putchar':
>putchar.c:(.text+0x4): undefined reference to `console_init'
>putchar.c:(.text+0x18): undefined reference to `console_printf'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(printf.o): In function `printf':
>printf.c:(.text+0x6): undefined reference to `console_init'
>printf.c:(.text+0x44): undefined reference to `console_printf'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(ndoprnt.o): In function `_ndoprnt':
>ndoprnt.c:(.text+0xb26): undefined reference to `__stack_chk_fail'
>/home/vasily/bbb/menuetlibc_new/lib/libc.a(doprnt.o): In function `_doprnt':
>doprnt.c:(.text+0xa5e): undefined reference to `__stack_chk_fail'
>objcopy printftest.kex -O binary
>objcopy: 'printftest.kex': No such file
>make[2]: *** [printftest.kex] Error 1
>make[2]: Leaving directory `/home/vasily/bbb/menuetlibc_new/programs/binclock'
>make[1]: *** [all] Error 2
>make[1]: Leaving directory `/home/vasily/bbb/menuetlibc_new/programs'
>make: *** [all] Error 2
>vasily@vasily-desktop:~/bbb/menuetlibc_new$


Как видите, библы собрал, остались бонус-приблуды.
На стадии линковки чего-то там вышли одни undefined reference` ы + отсутствует файл.


Вернуться к началу
   
СообщениеДобавлено: Вт дек 25, 2007 4:31 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Я добавлял в menuetlibc новые функции. В частности putchar() printf(). Обе эти функции для вывода в консоль используют экспортируемые функции из файла console.o Сам console.asm написан на ассемблере и компилируется FASM-ом. Я почему-то забыл добавить в исходники menuetlibc файл console.asm .В общем вот этот файл(реализация не самая лучшая, но тогда мне это было не особо важно).
Код:
format ELF
section '.text' executable

public console_init
public console_printf
public console_exit

align 4
console_init:

        pushad

        mov eax,[console_init_status]
        test eax,eax
        jnz console_initializated

        mov [console_init_status],1

        mov eax,68
        mov ebx,19
        mov ecx,console_path
        int 0x40

        test eax,eax
        jz console_not_loaded

                mov ebx,[eax+4]
                mov [con_start],ebx

                mov ebx,[eax+4+16]
                mov [con_init],ebx

                mov ebx,[eax+4+32]
                mov [con_printf],ebx

                push 1
                call [con_start]

                push caption
                push -1
                push -1
                push -1
                push -1
                call [con_init]

        console_not_loaded:

        console_initializated:

        popad

        ret

align 4
console_printf:

        pop [return_addres]

        call [con_printf]
        ;add esp,8

        push [return_addres]

        ret

align 4
console_exit:

        push 0
        call [con_exit]

        ret


;-----------------------------
console_path db '/sys/lib/console.obj',0
caption      db 'Console',0

align 4
con_start                 rd 1
con_init                  rd 1
con_printf                rd 1
con_exit                  rd 1
console_init_status       rd 1
return_addres             rd 1


нужно добавить его к статической библиотеке libc.a либо прописать в makefile, чтобы он компилировался и линковался к libc.a

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Вернуться к началу
СообщениеДобавлено: Сб дек 29, 2007 4:02 pm 
Не было printf - кошмар. Реализация многих функций этой libc оставляет желать лучшего. Так что вам местный товарищи скажут спасибо. Хорошо.


Вернуться к началу
   
СообщениеДобавлено: Сб дек 29, 2007 6:44 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4221
Что тут плохо а что хорошо, тут и так все прекрасно знают. А твоё редкое умение замечать очевидные вещи и так всех напрягает.
Я тебе повторю - хочешь лучше - напиши лучше.

_________________
Через тернии к звездам


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 20 сообщений ]  На страницу Пред. 1 2

Часовой пояс: UTC+03:00


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

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


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

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