nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Apr 2024 08:38



Reply to topic  [ 100 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next
Pascal 
Author Message
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
HardWareMan wrote:
На счет логики С, как новичку понимать такую задачку:
Quote:
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 ), что и надо было.


18 Jun 2008 19:44
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
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. Однако, после школьного курса алгебры я тоже юзаю скобки на всякий пожарный...


18 Jun 2008 20:24
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
HardWareMan wrote:
То же самое, но пас бы сдвинул только d. Однако, после школьного курса алгебры я тоже юзаю скобки на всякий пожарный...


ну про Паскаль я знаю ;)
на счёт Си я не в курсах какие у него там приоритеты - ставлю скобки везде где только возможно (тем более если это избыточностью кода не грозит).

касаемо Java. Самый дебильный язык, который я только видел! А джава АСМ - это кака конкретная !


18 Jun 2008 20:39
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
Romanich wrote:
тут ещё мега-извратная идея появилась попытаться использовать банк видеопамяти текстого режима 0xB000:0x0000


мега извратную идею проверил сегодня дома. Всё закончилось повисанием 98й винды и ресетом.

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

P.S. было время, когда в защищенном режиме код исполнял в линейном буфере кадра видеокарты :) изврат работал!


18 Jun 2008 20:43
Profile
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
Romanich wrote:
не умеет DMA лазить в видеопамять :(

Бугага! Во времена ISA карт ДМА не юзался видеоплатами. Соответственно, не работал. И скорее всего поэтому эта область закрыта для басмастеринга PCI.
Romanich wrote:
P.S. было время, когда в защищенном режиме код исполнял в линейном буфере кадра видеокарты :) изврат работал!

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


18 Jun 2008 20:47
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
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 ?
При условии наличия рипнутой графики и музонов.


18 Jun 2008 20:54
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
ещё одну вещь вспомнил, что возможно перейти в нулевое кольцо из дос машины в вин 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
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
ещё одну вещь вспомнил, что возможно перейти в нулевое кольцо из дос машины в вин 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
Profile
God
User avatar

Joined: 29 Dec 2003 01:00
Posts: 1101
Location: Москва
Reply with quote
Post 
Да Романыч срочно курить винду, если тебе нужен прямой доступ используй DirectDraw и париться не надо.
Со звуком еще проще...

_________________
Московский филиал NedoPC http://www.nedopc.com


19 Jun 2008 00:13
Profile ICQ WWW
Banned
User avatar

Joined: 20 Mar 2005 13:41
Posts: 2141
Location: От туда
Reply with quote
Post 
CHRV wrote:
Да Романыч срочно курить винду, если тебе нужен прямой доступ используй DirectDraw и париться не надо.
Со звуком еще проще...

Угу, под виндами и директрисой тока директ дроу. Быстро и качественно.


19 Jun 2008 02:07
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
У мну брат под боком, виндах шарит :) я с ним поговорил-сказал, что АПИ мой под винды спортирует.
я вот думаю-надо ли?


19 Jun 2008 02:31
Profile
God
User avatar

Joined: 03 Feb 2003 13:53
Posts: 1078
Reply with quote
Post 
Romanich wrote:
У мну брат под боком, виндах шарит :) я с ним поговорил-сказал, что АПИ мой под винды спортирует.
я вот думаю-надо ли?
Лучше тады под СДЛ:)

_________________
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин


19 Jun 2008 03:38
Profile
Banned

Joined: 12 Oct 2006 16:44
Posts: 608
Reply with quote
Post 
У СДЛ экран 320х240
а у меня 128х128
и это окончательно в данной разработке


19 Jun 2008 05:18
Profile
God
User avatar

Joined: 03 Feb 2003 13:53
Posts: 1078
Reply with quote
Post 
Romanich wrote:
У СДЛ экран 320х240
а у меня 128х128
и это окончательно в данной разработке

У СДЛ вообще нет экрана, там битпланы:) И что мешает софтверно увелить.

_________________
Image
Формат конференции позволяет сказать то что я действительно думаю о проблемах...
(с) Путин


19 Jun 2008 11:58
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22615
Location: Silicon Valley
Reply with quote
Post 
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++];

_________________
:dj: https://mastodon.social/@Shaos


19 Jun 2008 15:10
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 100 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6, 7  Next

Who is online

Users browsing this forum: No registered users and 73 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.