Mario79 пишет:
видимо вершина стека накладывается на путь, попробуй сместить вниз стек или поднять вверх путь на 4 байта. Если в стек первым делом кладется 0 - строка получаестя "пустой".
Попробуй вывести чтоить типа puts(path + 4); ....
Помогите новичку
Возможно ли скомпилировать библиотеку с помощью MinGW? Выходной файл (после gcc -c file.c) - COFF с 3 секциями (.text, .data, .bss), причём последние две - нулевой длины.
По твоему вопросу я ничего сказать не могу. Я даже собрать твою игру не смог.
Сорри за оффтоп, но это, наверное, для игры Donkey. Я уже несколько дней переписывал её на С-- и одновременно доделывал. У тебя был хороший код, многим вещам я с него научился ,я серьёзно.
Что не сделано: врезание и система уровней.
Что сделано: перерисовка не видна, более эстетично отображается дорога, пауза.
Может быть ты захочешь перейти на С--? Если нет - я буду разрабатывать игру отдельно. Почему? Потому что я вначале доделаю её, но это аж никак не конечная цель. Я хочу её переделать чтоб:
1. было много полос и несколько видов машин
2. симпатичная графика, я уже нарыл опенсорсных изображений
Рализовать это не сложно, но нужно время.
Сорри за оффтоп, но это, наверное, для игры Donkey. Я уже несколько дней переписывал её на С-- и одновременно доделывал. У тебя был хороший код, многим вещам я с него научился ,я серьёзно.
Что не сделано: врезание и система уровней.
Что сделано: перерисовка не видна, более эстетично отображается дорога, пауза.
Может быть ты захочешь перейти на С--? Если нет - я буду разрабатывать игру отдельно. Почему? Потому что я вначале доделаю её, но это аж никак не конечная цель. Я хочу её переделать чтоб:
1. было много полос и несколько видов машин
2. симпатичная графика, я уже нарыл опенсорсных изображений
Рализовать это не сложно, но нужно время.
- Attachments
-
-
donkey.zip (3.5 KiB)Downloaded 278 times
-
Из хаоса в космос
Leency
на С-- переходить не хочу. пробовал - не понравился. то, что программа может развиваться параллельными путями, считаю нормальным. только надо с версиями разобраться (или обозначать версию на C-- Donkey--).
а вообще, я написал несколько функций для работы с графикой, которые можно было бы использовать не только в моих приложениях, поэтому меня интересует информация по библиотекам. может есть описание особенностей библиотек в KolibriOS? и может есть утилиты для работы с COFF?
на С-- переходить не хочу. пробовал - не понравился. то, что программа может развиваться параллельными путями, считаю нормальным. только надо с версиями разобраться (или обозначать версию на C-- Donkey--).
а вообще, я написал несколько функций для работы с графикой, которые можно было бы использовать не только в моих приложениях, поэтому меня интересует информация по библиотекам. может есть описание особенностей библиотек в KolibriOS? и может есть утилиты для работы с COFF?
главное - не создавать новую библиотеку, а дополнить одну из уже имеющихся.. так как думаю многим хочется чтобы система имела одну полную библиотеку, а не кучу разных, но с одинаково неполным набором функций.. // а поиск по форуму должен тебе помочь с поиском инфы..
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Хотелось бы изучить нормально ассмблер, но я пользую linux а учебники видел только под windows. Да и вообще хотелось бы изучать асму без привязки к конкретной оси. Подскажите документацию для этого.
Общеприветсвую всех!
Сейчас пишу программу для работы с одной моей железкой и столкнулся с проблемой.
Функция 57 (PCI BIOS) почему то при каждом использовании вызывает исключение 0D. В документации не написано никаких особых условий для ее работы. Или все-таки какие-то телодвижения перед ее использованием всеже нужно делать, тогда какие?
Зарание спасибо.
Сейчас пишу программу для работы с одной моей железкой и столкнулся с проблемой.
Функция 57 (PCI BIOS) почему то при каждом использовании вызывает исключение 0D. В документации не написано никаких особых условий для ее работы. Или все-таки какие-то телодвижения перед ее использованием всеже нужно делать, тогда какие?
Зарание спасибо.
Вечером посмотрю что с вызовом, скорее всего после каких то правок ядра вызов перестал работать.
Пока посмотри http://kolibrios.org/?p=SVN&kind=dir&lo ... es/new_api она использует 57ю функцию.
Пока посмотри http://kolibrios.org/?p=SVN&kind=dir&lo ... es/new_api она использует 57ю функцию.
Спасибо просмотрел, но возник другой вопрос. Если до этого никто не заметил, что функция не работает, значит ее никто не использует, но раньше использоваали. Почему перестали? Ведь это более удобно, чем через только через pci регистры. Или как?
Видимо вопрос слишком сложный. Тогда у меня вопрос полегче.
Как загрузить(обьявить?) переменную(структуру), чтобы она находилась в памяти по аддресу, кратному, например 0х10?
Как загрузить(обьявить?) переменную(структуру), чтобы она находилась в памяти по аддресу, кратному, например 0х10?
Code: Select all
adyn db 1
align 10h
dyva db 2
Goodwin
При динмическом выделении памяти через 68 функцию - область памяти всегда выровнена на границу 4Кб блока, а это все мыслимые выравнивания.
При динмическом выделении памяти через 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
Короче вопрос:
Хотел добавить стрелку. Правильно зделал? Это в 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 (286 Bytes)Viewed 6308 times
-
"зделал" неправильно:
1) прибавлять к адресу, и прибавлять к значению - две совершенно разные вещи
2) отсутствие "поворотной арифметики" - это уже не стрелка, а фиг его знает что
1) прибавлять к адресу, и прибавлять к значению - две совершенно разные вещи
2) отсутствие "поворотной арифметики" - это уже не стрелка, а фиг его знает что
Я тут начал переводить из С (не с++) в Асм и сразу проблемы . Я по ходу 2 языка изучаю.;??? Означает "как дальше быть?" . Вот такой код:
А это я совсем не понял как:
И еще как это можно перевести на фасм:
;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
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