Author |
Message |
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
| | | | HardWareMan wrote: На счет логики С, как новичку понимать такую задачку: Ответы: 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 ), что и надо было.
|
18 Jun 2008 19:44 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
ПХП как раз логичен, ибо «Левая» ассоциативность сложения дает нам именно 13 — в пхп это ожидаемый результат. Возможно. Но наверно бэйсик все же более удобнее и понятнее. Пройденный этап. Нужно иметь нужный склад мышления. К тому же, МАСМ никто не отменял. Задача дана в исходном виде. И ее исполнение зависит от предпочтений (читай приоритетов вычислений при разборе формулы) компилятора, которая еще зависит от типа оптимизации.
То же самое, но пас бы сдвинул только d. Однако, после школьного курса алгебры я тоже юзаю скобки на всякий пожарный...
|
18 Jun 2008 20:24 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
ну про Паскаль я знаю
на счёт Си я не в курсах какие у него там приоритеты - ставлю скобки везде где только возможно (тем более если это избыточностью кода не грозит).
касаемо Java. Самый дебильный язык, который я только видел! А джава АСМ - это кака конкретная !
|
18 Jun 2008 20:39 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
мега извратную идею проверил сегодня дома. Всё закончилось повисанием 98й винды и ресетом.
не умеет DMA лазить в видеопамять
P.S. было время, когда в защищенном режиме код исполнял в линейном буфере кадра видеокарты изврат работал!
|
18 Jun 2008 20:43 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Бугага! Во времена ISA карт ДМА не юзался видеоплатами. Соответственно, не работал. И скорее всего поэтому эта область закрыта для басмастеринга PCI.
Нуу, это ж Vesa, это значит как минимум VLB карта, которая маппит весь свой буфер в адресное пространство проца.
|
18 Jun 2008 20:47 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
... что собственно и радует
есть ли драйвер-обманка под винХР, позволяющий всё-таки в Дос-машине задействовать LFB (лин. буф. кадра)?
мой вариант АПИ использует Banked Mode - ХР не ругается.
да и ещё нужен доступ к портам 0x70, 0x71 (CMOS) из под ДОС-машины в вин ХР - там РТЦ тикает по дефолту на 2048 Гц, а надо 8192.
HardwareMan> Пройденный этап. Нужно иметь нужный склад
HardwareMan> мышления. К тому же, >МАСМ никто не отменял.
интересно, а NES- и SEGA- девелоперы када пишут свои игрушки, тоже их пишут на голом асме? Или все-таки ЯВУ пользуют?
HardwareMan> Бугага! Во времена ISA карт ДМА не юзался
HardwareMan> видеоплатами. Соответственно, не работал.
HardwareMan> И скорее всего поэтому эта область закрыта для
HardwareMan> басмастеринга PCI.
вот это зря что писюки на этом сильно облажались
можно было как 2д- блиттер поюзать
P.S. трудновато на асме писать масштабные игры.
P.P.S. а реально ли под приставку сдевелопить что-нить типа Battle Toads, TMNT или Gradius, Thunder Force ?
При условии наличия рипнутой графики и музонов.
|
18 Jun 2008 20:54 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
ещё одну вещь вспомнил, что возможно перейти в нулевое кольцо из дос машины в вин 9х. Схема такая:
1) через dpmi из 16 bit real лезем в 32 bit protected mode
2) пишем на Tasm32 функцию перевода в нулевое кольцо
(создаём гейт и заносим его в gdtr) или в инете ищем ring0.asm
3) пишем функцию - что будет в этом кольце исполняться
4) в функцию кольца передаем указатель функции 3) и её параметры
я таким макаром в досовской проге дверцей сд-рв дергал и проплавлял болванки в вин9х
ну и рисовал на рабочем столе винды (правда в режиме 256 цветов, так как винда в 16/24/32 битах использует ТАЙЛОВУЮ организацию видеопамяти (не по строчкам идут там байты))
|
18 Jun 2008 21:11 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
ещё одну вещь вспомнил, что возможно перейти в нулевое кольцо из дос машины в вин 9х. Схема такая:
1) через dpmi из 16 bit real лезем в 32 bit protected mode
2) пишем на Tasm32 функцию перевода в нулевое кольцо
(создаём гейт и заносим его в gdtr) или в инете ищем ring0.asm
3) пишем функцию - что будет в этом кольце исполняться
4) в функцию кольца передаем указатель функции 3) и её параметры
я таким макаром в досовской проге дверцей сд-рв дергал и проплавлял болванки в вин9х
ну и рисовал на рабочем столе винды (правда в режиме 256 цветов, так как винда в 16/24/32 битах использует ТАЙЛОВУЮ организацию видеопамяти (не по строчкам идут там байты))
|
18 Jun 2008 21:12 |
|
|
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
Да Романыч срочно курить винду, если тебе нужен прямой доступ используй DirectDraw и париться не надо.
Со звуком еще проще...
_________________Московский филиал NedoPC http://www.nedopc.com
|
19 Jun 2008 00:13 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Угу, под виндами и директрисой тока директ дроу. Быстро и качественно.
|
19 Jun 2008 02:07 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
У мну брат под боком, виндах шарит я с ним поговорил-сказал, что АПИ мой под винды спортирует.
я вот думаю-надо ли?
|
19 Jun 2008 02:31 |
|
|
cr0acker
God
Joined: 03 Feb 2003 13:53 Posts: 1078
|
_________________
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
|
19 Jun 2008 03:38 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
У СДЛ экран 320х240
а у меня 128х128
и это окончательно в данной разработке
|
19 Jun 2008 05:18 |
|
|
cr0acker
God
Joined: 03 Feb 2003 13:53 Posts: 1078
|
У СДЛ вообще нет экрана, там битпланы:) И что мешает софтверно увелить.
_________________
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин
|
19 Jun 2008 11:58 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22615 Location: Silicon Valley
|
Тут не в приоритетах дело - просто ВСЕ сишные компиляторы поддерживают эту фичу вычисления всех аргументов перед использованием, и эта фича уже давно стала стандартом - именно поэтому нельзя делать вот так: a = b[i++]+b[i++] (как и a = b[++i]+b[++i]), т.к. индекс возьмется один и тот же - в данном случае мы не можем ВООБЩЕ гарантировать порядок разбора выражения, поэтому ТАК ПИСАТЬ НЕЛЬЗЯ! P.S. То что я привел в качестве примера выше на сях пишется так: a=b[i++];a+=b[i++];
|
19 Jun 2008 15:10 |
|
|