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
http://board.flatassembler.net/topic.ph ... sc&start=0
тут есть пример программы на Ада и файлы для gnat

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 то всё компилируетя