Помогите новичку

Applications development, KoOS API questions
  • Возможно ли скомпилировать библиотеку с помощью MinGW? Выходной файл (после gcc -c file.c) - COFF с 3 секциями (.text, .data, .bss), причём последние две - нулевой длины.
  • По твоему вопросу я ничего сказать не могу. Я даже собрать твою игру не смог.
    Сорри за оффтоп, но это, наверное, для игры Donkey. Я уже несколько дней переписывал её на С-- и одновременно доделывал. У тебя был хороший код, многим вещам я с него научился :D ,я серьёзно.
    Что не сделано: врезание и система уровней.
    Что сделано: перерисовка не видна, более эстетично отображается дорога, пауза.

    Может быть ты захочешь перейти на С--? :) Если нет - я буду разрабатывать игру отдельно. Почему? Потому что я вначале доделаю её, но это аж никак не конечная цель. Я хочу её переделать чтоб:
    1. было много полос и несколько видов машин
    2. симпатичная графика, я уже нарыл опенсорсных изображений

    Рализовать это не сложно, но нужно время.
    Attachments
    donkey.zip (3.5 KiB)
    Downloaded 278 times
    Из хаоса в космос
  • Leency
    на С-- переходить не хочу. пробовал - не понравился. то, что программа может развиваться параллельными путями, считаю нормальным. только надо с версиями разобраться (или обозначать версию на C-- Donkey--).

    а вообще, я написал несколько функций для работы с графикой, которые можно было бы использовать не только в моих приложениях, поэтому меня интересует информация по библиотекам. может есть описание особенностей библиотек в KolibriOS? и может есть утилиты для работы с COFF?
  • главное - не создавать новую библиотеку, а дополнить одну из уже имеющихся.. так как думаю многим хочется чтобы система имела одну полную библиотеку, а не кучу разных, но с одинаково неполным набором функций.. // а поиск по форуму должен тебе помочь с поиском инфы..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Хотелось бы изучить нормально ассмблер, но я пользую linux а учебники видел только под windows. Да и вообще хотелось бы изучать асму без привязки к конкретной оси. Подскажите документацию для этого.
  • Общеприветсвую всех!
    Сейчас пишу программу для работы с одной моей железкой и столкнулся с проблемой.
    Функция 57 (PCI BIOS) почему то при каждом использовании вызывает исключение 0D. В документации не написано никаких особых условий для ее работы. Или все-таки какие-то телодвижения перед ее использованием всеже нужно делать, тогда какие?
    Зарание спасибо.
  • Вечером посмотрю что с вызовом, скорее всего после каких то правок ядра вызов перестал работать.
    Пока посмотри http://kolibrios.org/?p=SVN&kind=dir&lo ... es/new_api она использует 57ю функцию.
  • Спасибо просмотрел, но возник другой вопрос. Если до этого никто не заметил, что функция не работает, значит ее никто не использует, но раньше использоваали. Почему перестали? Ведь это более удобно, чем через только через pci регистры. Или как?
  • Видимо вопрос слишком сложный. Тогда у меня вопрос полегче.
    Как загрузить(обьявить?) переменную(структуру), чтобы она находилась в памяти по аддресу, кратному, например 0х10?
  • Code: Select all

    adyn db 1
    align 10h
    dyva db 2
    
    Переменная dyva будет как раз находиться по адресу кратному 0x10
  • Goodwin
    При динмическом выделении памяти через 68 функцию - область памяти всегда выровнена на границу 4Кб блока, а это все мыслимые выравнивания.
  • Привет! Это опять я. Пришел.
    Короче вопрос:
    Хотел добавить стрелку. Правильно зделал? Это в LibGFX'е.

    proc gfx.strelka _ctx, _x1, _y1, _x2, _y2, _color;//////////////от Ясхана для Блок-с.////////////;;

    stdcall gfx.pen.color, [_ctx], [_color]

    stdcall gfx.line, [_ctx], [_x1], [_y1], [_x2], [_y2]

    stdcall gfx.line, [_ctx], [_x2+10], [_y2+1], [_x2+3], [_y2+1]
    stdcall gfx.line, [_ctx], [_x2+10], [_y2+2], [_x2+7], [_y2+2]

    stdcall gfx.line, [_ctx], [_x2-10], [_y2-1], [_x2-3], [_y2-1]
    stdcall gfx.line, [_ctx], [_x2-10], [_y2-2], [_x2-7], [_y2-2]

    stdcall gfx.pen.color, [_ctx], [_color-10]
    stdcall gfx.pixel, [_ctx], [_x2+6], [_y2+2] ; Черно Серая точка
    stdcall gfx.pixel, [_ctx], [_x2-6], [_y2-2] ;
    stdcall gfx.pixel, [_ctx], [_x2+2], [_y2+1] ;
    stdcall gfx.pixel, [_ctx], [_x2-2], [_y2-1] ;

    stdcall gfx.pen.color, [_ctx], [_color-20]
    stdcall gfx.pixel, [_ctx], [_x2+5], [_y2+2] ; Средне Серая точка
    stdcall gfx.pixel, [_ctx], [_x2-5], [_y2-2] ;

    stdcall gfx.pen.color, [_ctx], [_color-30]
    stdcall gfx.pixel, [_ctx], [_x2+4], [_y2+2] ; Бело Серая точка
    stdcall gfx.pixel, [_ctx], [_x2-4], [_y2-2] ;
    stdcall gfx.pixel, [_ctx], [_x2+1], [_y2+1] ;
    stdcall gfx.pixel, [_ctx], [_x2-1], [_y2-1] ;
    ret
    endp
    Attachments
    tkir.PNG
    tkir.PNG (286 Bytes)
    Viewed 6308 times
  • "зделал" неправильно:
    1) прибавлять к адресу, и прибавлять к значению - две совершенно разные вещи
    2) отсутствие "поворотной арифметики" - это уже не стрелка, а фиг его знает что
  • Я тут начал переводить из С (не с++) в Асм и сразу проблемы . Я по ходу 2 языка изучаю.;??? Означает "как дальше быть?" . Вот такой код:

    Code: Select all

    typedef uint32_t	    FbStip; 
    #define FB_STIP_ALLONES	((FbStip) -1) //Как это понять?
    #define FB_STIP_MASK	(FB_STIP_UNIT - 1)
    #define FbStipRight(x,n) FbScrRight(x,n)
    #define FbScrRight(x,n)	((x) << (n))
    #define FB_STIP_MASK	(FB_STIP_UNIT - 1)
    #define FbStipLeft(x,n)	FbScrLeft(x,n)
    #define FbScrLeft(x,n)	((x) >> (n))
    #define FB_STIP_UNIT	(1 << FB_STIP_SHIFT)
    #define FB_STIP_SHIFT 	LOG2_BITMAP_PAD
    #define LOG2_BITMAP_PAD	5
    
     macro FbRightStipMask x {;;#define FbRightStipMask (x) ( ((FB_STIP_UNIT - (x)) and FB_STIP_MASK) ? \
    			     FbScrLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - (x)) and FB_STIP_MASK) : 0)
    	   mov ecx,1
               shl ecx,5;;ecx=FB_STIP_UNIT
               
               push ecx
    			 
               mov edx,1
               sub ecx,edx
               mov esi,ecx ;;esi=FB_STIP_MASK
    			 
               pop ecx
               
               sub ecx,x
               and ecx,esi
               shl FB_STIP_ALLONES,esi;????????
                        
               ;?????
    			     }
    
    
      macro FbStipMask x,w	{
     ;; #define FbStipMask (x,w) (FbStipRight(FB_STIP_ALLONES,(x) and FB_STIP_MASK) and FbStipLeft(FB_STIP_ALLONES,(FB_STIP_UNIT - ((x)+(w))) and FB_STIP_MASK))
      
    			 mov ecx,1
    			 shl ecx,5;;ecx=FB_STIP_UNIT
    			 
    			 mov ebx,x
    			 add ebx,w
    			 sub ecx,ebx
    			 
    			 push ecx
    			 
    			 mov edx,1
    			 sub ecx,edx
    			 mov esi,ecx ;;esi=FB_STIP_MASK
    			 
    			 pop ecx
    			 
    			 and ecx,esi
    			 shl FB_STIP_ALLONES,ecx;????
    			 
    			 mov eax,x
    			 and eax,esi
    			 shr FB_STIP_ALLONES,eax;????
    			 
    			 and FB_STIP_ALLONES, FB_STIP_ALLONES;??????
    			 
    			 }
    А это я совсем не понял как:

    Code: Select all

    #define FbPatternOffset(o,t)  ((o) ^ (FbPatternOffsetBits & ~(sizeof (t) - 1)))
    #define FbPatternOffsetBits	0
    
    #define FbPtrOffset(p,o,t)		((t *) ((CARD8 *) (p) + (o)))
    typedef uint8_t		CARD8;
    И еще как это можно перевести на фасм:
    ;ENUM
    ;by mammon_
    ;Summary: A NASM macro emulating the C 'ENUM" command
    ;Assembler: NASM


    macro ENUM 2-* { ;Usage: ENUM int SYMBOLS
    %assign i %1 ; where int is the number to begin enumeration at [0]
    %rep %0 ; SYMBOLS is a list of Symbols to define
    %2 EQU 0xi ;Example: ENUM 0 TRUE FALSE
    %assign i i+1 ; this EQUates TRUE to 0 and FALSE to 1
    %rotate 1 ;Example: ENUM 11 JACK QUEEN KING
    %endrep ; this EQUs JACK to 11, QUEEN to 12, KING to 13
  • Who is online

    Users browsing this forum: Bing [Bot] and 1 guest