Pascal

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

HardWareMan wrote:На счет логики С, как новичку понимать такую задачку:
int i = 5;
i = ++i + ++i;
Вопрос: Чему равно i?
Ответы:
MS VC = 14 (++i, ++i, i+i)
C# = 13 (++i, i+i, ++i)
GCC = 14 (++i, ++i, i+i)
PHP = 13 (++i, i+i, ++i)
Итак, где логика хваленного С? Самый логичный из всех логичных языков бы есть и будет ассемблер.
я такую хрень в скобки зажимаю: i = (++i) + (++i);

аналогично проперся со сдвигом:

p=a+b+c+d<<8 он понимает как: (a+b+c+d)<<8, поэтому пишу:
p=a+b+c+(d<<8 ), что и надо было.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Shaos wrote:Твой пример лишь показывает нелогичность C# и PHP - все си говорят одно и тоже :)
ПХП как раз логичен, ибо «Левая» ассоциативность сложения дает нам именно 13 — в пхп это ожидаемый результат.
Shaos wrote:P.S. А для новичков лучше всего Java - строгая типизация и обнаружение подавляющего большинства ошибок на этапе компиляции
Возможно. Но наверно бэйсик все же более удобнее и понятнее.
Shaos wrote:P.P.S. Попробуй написать на ассемблере что-то больше тысячи строк - посмотрим в какой момент ты взвоешь ;)
Пройденный этап. Нужно иметь нужный склад мышления. К тому же, МАСМ никто не отменял. ;)
Romanich wrote:я такую хрень в скобки зажимаю: i = (++i) + (++i);
Задача дана в исходном виде. И ее исполнение зависит от предпочтений (читай приоритетов вычислений при разборе формулы) компилятора, которая еще зависит от типа оптимизации.
Romanich wrote:аналогично проперся со сдвигом:
p=a+b+c+d<<8 он понимает как: (a+b+c+d)<<8, поэтому пишу:
p=a+b+c+(d<<8 ), что и надо было.
То же самое, но пас бы сдвинул только d. Однако, после школьного курса алгебры я тоже юзаю скобки на всякий пожарный...
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

HardWareMan wrote:То же самое, но пас бы сдвинул только d. Однако, после школьного курса алгебры я тоже юзаю скобки на всякий пожарный...
ну про Паскаль я знаю ;)
на счёт Си я не в курсах какие у него там приоритеты - ставлю скобки везде где только возможно (тем более если это избыточностью кода не грозит).

касаемо Java. Самый дебильный язык, который я только видел! А джава АСМ - это кака конкретная !
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Romanich wrote:тут ещё мега-извратная идея появилась попытаться использовать банк видеопамяти текстого режима 0xB000:0x0000
мега извратную идею проверил сегодня дома. Всё закончилось повисанием 98й винды и ресетом.

не умеет DMA лазить в видеопамять :(

P.S. было время, когда в защищенном режиме код исполнял в линейном буфере кадра видеокарты :) изврат работал!
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Romanich wrote: не умеет DMA лазить в видеопамять :(
Бугага! Во времена ISA карт ДМА не юзался видеоплатами. Соответственно, не работал. И скорее всего поэтому эта область закрыта для басмастеринга PCI.
Romanich wrote:P.S. было время, когда в защищенном режиме код исполнял в линейном буфере кадра видеокарты :) изврат работал!
Нуу, это ж Vesa, это значит как минимум VLB карта, которая маппит весь свой буфер в адресное пространство проца.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

HardWareMan wrote: Нуу, это ж Vesa, это значит как минимум VLB карта, которая маппит весь свой буфер в адресное пространство проца.
... что собственно и радует :)

есть ли драйвер-обманка под винХР, позволяющий всё-таки в Дос-машине задействовать LFB (лин. буф. кадра)?

мой вариант АПИ использует Banked Mode - ХР не ругается.

да и ещё нужен доступ к портам 0x70, 0x71 (CMOS) из под ДОС-машины в вин ХР - там РТЦ тикает по дефолту на 2048 Гц, а надо 8192.

HardwareMan> Пройденный этап. Нужно иметь нужный склад
HardwareMan> мышления. К тому же, >МАСМ никто не отменял.

интересно, а NES- и SEGA- девелоперы када пишут свои игрушки, тоже их пишут на голом асме? Или все-таки ЯВУ пользуют?

HardwareMan> Бугага! Во времена ISA карт ДМА не юзался
HardwareMan> видеоплатами. Соответственно, не работал.
HardwareMan> И скорее всего поэтому эта область закрыта для
HardwareMan> басмастеринга PCI.

вот это зря что писюки на этом сильно облажались :lol:
можно было как 2д- блиттер поюзать


P.S. трудновато на асме писать масштабные игры.

P.P.S. а реально ли под приставку сдевелопить что-нить типа Battle Toads, TMNT или Gradius, Thunder Force ?
При условии наличия рипнутой графики и музонов.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

ещё одну вещь вспомнил, что возможно перейти в нулевое кольцо из дос машины в вин 9х. Схема такая:

1) через dpmi из 16 bit real лезем в 32 bit protected mode
2) пишем на Tasm32 функцию перевода в нулевое кольцо
(создаём гейт и заносим его в gdtr) или в инете ищем ring0.asm
3) пишем функцию - что будет в этом кольце исполняться
4) в функцию кольца передаем указатель функции 3) и её параметры

я таким макаром в досовской проге дверцей сд-рв дергал и проплавлял болванки в вин9х

ну и рисовал на рабочем столе винды (правда в режиме 256 цветов, так как винда в 16/24/32 битах использует ТАЙЛОВУЮ организацию видеопамяти (не по строчкам идут там байты))
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

ещё одну вещь вспомнил, что возможно перейти в нулевое кольцо из дос машины в вин 9х. Схема такая:

1) через dpmi из 16 bit real лезем в 32 bit protected mode
2) пишем на Tasm32 функцию перевода в нулевое кольцо
(создаём гейт и заносим его в gdtr) или в инете ищем ring0.asm
3) пишем функцию - что будет в этом кольце исполняться
4) в функцию кольца передаем указатель функции 3) и её параметры

я таким макаром в досовской проге дверцей сд-рв дергал и проплавлял болванки в вин9х

ну и рисовал на рабочем столе винды (правда в режиме 256 цветов, так как винда в 16/24/32 битах использует ТАЙЛОВУЮ организацию видеопамяти (не по строчкам идут там байты))
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Post by CHRV »

Да Романыч срочно курить винду, если тебе нужен прямой доступ используй DirectDraw и париться не надо.
Со звуком еще проще...
Московский филиал NedoPC http://www.nedopc.com
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

CHRV wrote:Да Романыч срочно курить винду, если тебе нужен прямой доступ используй DirectDraw и париться не надо.
Со звуком еще проще...
Угу, под виндами и директрисой тока директ дроу. Быстро и качественно.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

У мну брат под боком, виндах шарит :) я с ним поговорил-сказал, что АПИ мой под винды спортирует.
я вот думаю-надо ли?
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Romanich wrote:У мну брат под боком, виндах шарит :) я с ним поговорил-сказал, что АПИ мой под винды спортирует.
я вот думаю-надо ли?
Лучше тады под СДЛ:)
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

У СДЛ экран 320х240
а у меня 128х128
и это окончательно в данной разработке
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Romanich wrote:У СДЛ экран 320х240
а у меня 128х128
и это окончательно в данной разработке
У СДЛ вообще нет экрана, там битпланы:) И что мешает софтверно увелить.
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

HardWareMan wrote:
Romanich wrote:я такую хрень в скобки зажимаю: i = (++i) + (++i);
Задача дана в исходном виде. И ее исполнение зависит от предпочтений (читай приоритетов вычислений при разборе формулы) компилятора, которая еще зависит от типа оптимизации.
Тут не в приоритетах дело - просто ВСЕ сишные компиляторы поддерживают эту фичу вычисления всех аргументов перед использованием, и эта фича уже давно стала стандартом - именно поэтому нельзя делать вот так: a = b[i++]+b[i++] (как и a = b[++i]+b[++i]), т.к. индекс возьмется один и тот же - в данном случае мы не можем ВООБЩЕ гарантировать порядок разбора выражения, поэтому ТАК ПИСАТЬ НЕЛЬЗЯ! P.S. То что я привел в качестве примера выше на сях пишется так: a=b[i++];a+=b[i++];
Я тут за главного - если что шлите мыло на me собака shaos точка net