Page 1 of 6
nasm, vc, gcc и другие
Posted: Thu Feb 22, 2007 2:15 pm
by diamond
Вот, статью написал:
http://diamondz.land.ru/hll/hll.htm (ссылка не рабочая)
Вариант пока предварительный, могут быть изменения (в том числе и по заявкам читателей).
Текущая статья по ссылке с Wiki
http://diamond.kolibrios.org/hll/hll.htm
Архивная
Статья из WebArhive (мало ли что)
Posted: Thu Feb 22, 2007 3:22 pm
by andrew_programmer
ОЧЕНЬ ПОЛЕЗНАЯ статья.
Posted: Thu Feb 22, 2007 4:05 pm
by Serge
Статья хорошая. Я бы добавил ещё часть по Watcom С но он пока в зачаточном состоянии.
Posted: Wed Feb 28, 2007 6:40 pm
by Serial
Отличная статья! спасибо.
Posted: Wed Apr 18, 2007 12:22 pm
by gplhater
Не нашел магического pe2kos и хидеров в статье
Posted: Wed Apr 18, 2007 5:53 pm
by diamond
Они не в статье, они в прилагаемом к статье архиве, ссылка на который дана в самой статье.
Posted: Sat Jun 23, 2007 8:16 pm
by Wildwest
Posted: Mon Aug 13, 2007 6:57 pm
by Dron2004
Статья просто замечательная. Огромное спасибо! Только что возился с написанием "Хеллоуворлда" на Visual C++ для Kolibri
.
Только вот заметил небольшую ошибочку (в главе
"Среды Visual C++ 6, C++ из Visual Studio .NET/2005"). Если написать
Code: Select all
kos_WriteTextToWindow(30,10,8,0,(char*)string,0);
то мы ничего не увидим, ибо последним аргументом (длиной строки) мы передаём 0. Если же передать реальную длину строки, то всё работает:
Code: Select all
kos_WriteTextToWindow(30,10,8,0,(char*)string,strlen(string));
Posted: Thu Aug 16, 2007 11:11 am
by diamond
Code: Select all
// функция 4
void kos_WriteTextToWindow(
Word x, Word y,
Byte fontType,
Dword textColour,
char *textPtr,
Dword textLen
);
Третий параметр соответствует старшему байту ecx в функции 4 (
http://diamondz.land.ru/klbr_doc/04.htm ). Установленный 3-й бит (маска 8 ) означает "выводить ASCIIZ-строку", для которой переданная длина (последний аргумент) игнорируется (вычисляется автоматически). Так что строку мы увидим (по крайней мере, начиная с версии K0600).
Posted: Mon Aug 20, 2007 6:23 am
by Dron2004
Может быть я что-то не так делаю, но...
Code: Select all
kos_WriteTextToWindow(270,200,8, 0xFFFFFF ,"K O S I L K A",0);
не дает ровным счётом ничего, в отличие от
Code: Select all
kos_WriteTextToWindow(270,200,8, 0xFFFFFF ,"K O S I L K A",19);
Проверял на ядре ревизии #605
Posted: Mon Aug 20, 2007 10:48 am
by mike.dld
Мне кажется, что 3-й параметр - тип шрифта (0 или 1). Может попробовать написать
Code: Select all
kos_WriteTextToWindow(270, 200, 0, 0x80FFFFFF , "K O S I L K A", 0);
Posted: Mon Aug 20, 2007 9:06 pm
by Alver
Dron2004
Если
Третий параметр соответствует старшему байту ecx в функции 4
то должнобы быть так:
Code: Select all
kos_WriteTextToWindow(270,200,0x80, 0xFFFFFF ,"K O S I L K A",0);
Posted: Thu Aug 23, 2007 3:56 pm
by diamond
В тексте статьи ошибка: на самом деле должно быть не 8, а 0x80, как отметил Alver. Кстати, в исходниках к статье (vc/hello.cpp) приведён правильный вариант.
Posted: Fri Aug 24, 2007 1:11 pm
by vectoroc
Пытаюсь обьявить функцию как stdcall, но mingw начинает ругаться
error: syntax error before '*' token
error: `stdcall' declared as function returning a function
Добавляю пару дефайнов
Code: Select all
# ifdef GNUC
# define stdcall __stdcall
# define cdecl __cdecl
# else
# define stdcall __attribute__ ((__stdcall))
# define cdecl __attribute__ ((__cdecl))
# endif
ругаться начинает по другому
error: syntax error before "__attribute__"
.
Не знаю в чем дело... Как ни странно в menuetlibc ниразу не пробегает слово stdcall, cdecl и подобные им.
Posted: Fri Aug 24, 2007 3:01 pm
by vectoroc
Разобрался... если сделать дефайн GNUC то всё компилируетя