• avatar Robus
  • 1
Боже упаси от такого. Предлагаешь мне со своим софтом ещё и компилятор прилагать? Нее сишарпы не для меня, только если по работе потребуют.
Знаешь, как-то очень давно был какой-то сайт где был написан эмулятор SPECCY, то ли на джаве то ли на флеше. Этот эмулятор был через браузер, и набранные очки в играх вписывались в топы. Ну там всякие соревнования EXELONов можно было проводить. И начал с авторами переписываться, простите, уже не помню кто это был, что вот эмулятор полностью защищён от взлома, потому что там, что-то применяется, что в памяти ксорится код исполняемой программы, вообщем не взломать одной бутылкой пива. Ну я сразу начал пробовать что к чему, и всё оказалось банально. Вся память 49152 байт в памяти хранилась DWORD'ами, где и вправду первый байт DWORD'а был заксоренный и видно, что он менялся, все 49152 байта в каждом DWORD'е молотились, однако третий байт этого DWORD'а не менялся. то есть видать где-то был код типа MEM[n]=MEM[n] XOR SUPER_BYTE_FOR_XORING, но автор да же не догадывался что в памяти остаётся оригинал. Там я был зарегистрирован под именем HACKER, и договорился с авторами, что я пытаюсь накрутить очки, а они придумывают метод защититься от этого. Мало того весь этот джава или флеш был такой супер ООП и так следил за памятью, что,! вникаем! — я находил в памяти, допустим, очки в Earth Shaker'е, менял на нужные байты НЕ ЗАКСОРЕННЫЕ ДАННЫЕ, то есть это биты с 16 по 23. И универсальный язык программирования выдавал мне в окошке аккуратную надпись «CRC memrory region error, correct?». Эврика!!! Отвечаешь ДА, и новые данные, которые я подставил автоматически вписывались под ксор!
Поэтому, да, я не хочу писать свой код, под вот такие вот виртуальные машины. Я уж лучше по старинке, на асме, под эмулятором Z80 быстрее будет исполняться, чем на таком вот «нативном» языке.
  • avatar Vitamin
  • 0
Кто ж тебе виноват, что ты используешь устаревшее ПО (10 лет назад это уже 2005 год, XP уже довольно стабильна), сваливая на железо неумение софта работать с ним.
Т.е. ты не писал разработчику с сообщением о его проблеме только потому что он в Копенгагене? Серьезно?

Давай ты откроешь исходники своих проектов для аудита на предмет педантичности, неленивости и «деструкции данных»? Заодно отделим рукожопость от невнимательности.
  • avatar Robus
  • 0
Все имеют право ошибаться, но сторонний разработчик плевать хотел что у какого-то там робуса не работает софт. Сидовский плеер попортил память, как раз тот случай о котором мы говорили. В те времена все уже вожделели ХР, а у меня был всё ещё 98ой, и судя по всему память закончилась, автоматическая диструкция памяти, при переходе с мелодию на мелодию не работала, и в какой-то момент пошло по памяти гулять. Я постоянно сохранялся, тяжёлое детство глючного софта, и побил половину своих проектов. Плеер выдал кучу хрипов в динамик, и всё остановилось. Потом сидел и восстанавливал остатки с винта, а результатом сбоя был запись артефактов на винт. Может, конечно за 10 лет его поправили, и возможно что на ХР этого всего не было бы, но факт остаётся фактом, код плеер испортил мне часть проектов, и никакой ММУ не помог.
А глюки своего софта я всегда могу поправить, если бы автором плеера был бы ты, я бы тебе написал письмо и возможно плеер больше бы такое не делал, но автор где-то там в Копенгагене.
«деструкция данных» это попытка заткнуть дырки людей которые любят у системы попросить попросить байтики, а отдавать не хотят. были бы программисты педантичными как кодеры, занимались бы деструкцией сами, тем более, что это одна-две строчки кода. Лень это всё. И в чём тут рукопожатие, экономия на двух строчках кода? Тогда можно выпилить из Z80 команду DI, будет рукопожатие, что бы HALTы не мешали работать ядру.
  • avatar hedj
  • 3
Яб добавил что MMU не только для надежности, но и для удобства и экономии ресурсов. Т.е. swap, mmap, copy-on-write, вот эти все ништяки. Ну и там границы не только между процессами, но и внутри процесса, чтоб стек не рос неограниченно, или чтоб код нельзя было модифицировать, например.
  • avatar tsl
  • 2
Я пробовал мелкий тест, который строит подобие игровой карты, используя стейтмашинку-итератор на ISR от DMA. При окончании каждой транзакции ДМА ему подбрасывается новое задание. При этом в ISR ДМА стоит EI, так как могут быть активными строчные прерывания, которые пропускать нельзя.
  • avatar tsl
  • 3
Учитывая, что тсконф предоставляет аж 3 источника прерываний (с разными векторами), обсуждение многотредового кода более чем актуально.
  • avatar tsl
  • 0
Кортексы опционально комплектуются ММУ, этот не оборудован.
  • avatar tsl
  • 2
=)
  • avatar VBI
  • 1
отлично.
потоки полезны будут как вариант выполнения кода под конфой.
под спеком эта обвязка относительно много ест.
  • avatar Vitamin
  • 0
А на этом арме есть разделение на пользовательское и привелегированное пространство? Если нет, тогда он не вписывается в озвученные ограничения.
  • avatar Vitamin
  • 0
Нибаюсь:) Я за всеобщее расширение кругозора. Пускай и путем слома шаблонов:)
  • avatar Vitamin
  • 0
Чисто техническая тонкость. Ничто не мешает получать на выходе именно нативный код.
  • avatar Vitamin
  • 4
Факт того, что я являюсь циничным мудаком (не к пидарасам, извините, ориентацией не вышел), совершенно не мешает мне уважать Робуса, его проды и статьи. Также разный взгляд на вещи (порой диаметрально противоположный) не мешает лично мне общаться, хотя и вносит определенный градус пыла в дискуссии.
Равно как и идея использования многопоточности именно в демах не отменяет озвученных спектрумовских проблем оной, возникающих во время разработки на пути к ровно одному сценарию использования.

Без подписи
  • avatar tsl
  • 3
Ну попробуй на АРМе из пользовательского пространства ОС сделать DI или выключить на контроллере таймер или испортить код.
Зависит на каком арме. На STM32 — запросто. (Там кстати никакого «DI» там нету, там задается разрешение для каждого канала на NVIC либо битами разрешения на соответствующей периферии.)
  • avatar VBI
  • 0
Vitamin, ты сейчас напорешься на робуса, я обещаю :)
  • avatar tsl
  • 4
Витамин, бида робусова в том, что он не умеет и не слишком стремится отвечать на троллинг таких циничных пидарасов как ты и я. На его месте я бы дополнил название словами "… in demos". Алсо, в тексте нигде не говорится про ОСи или системные утилиты. А для демы надежно то, что не упало при показе сабжа. У системной утилиты бесконечное количество сценариев использования, а у демы ровно 1 (если пробелонажимание не предусмотрено).
Ваш Лейтенант Вежливость.
  • avatar VBI
  • 1
«код для виртуальной машины», а не нативный
  • avatar Vitamin
  • 0
лучше победить проблему куском памяти, чем молотить что-то кодом(скриптом)
И таки зачастую он будет прав. Ибо память дешевая и ее относительно много, а работа процессора требует энергии, которой не всегда много, особенно на мобильных устройствах.
Так что не существует единственно верного способа писать оптимально.
  • avatar Vitamin
  • 0
Ты будешь удивлен, но конечным результатом работы джавера и сишарпника как раз является нативный код. И это уже довольно давно так. Ибо код для виртуальной машины можно уже рассматривать как промежуточный вариант, преобразуемый в конце концов к нативному.
  • avatar Vitamin
  • 2
Не соглашусь.
Что тебе пришлось восстанавливать после падения плеера сида? Пропавший плейлист? Или упала вся система, не умеющая 10 лет назад толком обеспечить защиту приложений друг от друга и тебе пришлось восстанавливать сеанс?
По твоей логике получается, что любая защита- это порождение лени. Давай уберем перила на лестницах и мостах (кто-то ленится ходить правильно чтоб не падать с края), подушки и ремни безопасности из автомобилей (кто-то ленится научиться хорошо водить). Да, наличие средств безопасности, совершенно не повод эту безопасность соблюдать, у них другая задача- минимизировать ущерб, если что-то пошло не так.
И еще одна нестыковка. Себе ты оставляешь право на ошибки в софте, хотя и стараешься минимизировать их. А вот другим почему-то не хочешь давать. Глючит — никогда не буду использовать. И плевать что это первая версия. И плевать, что если все так будут делать, то следующей версии не будет. И плевать, что «деструкция данных при закрытии программы» — это рукожопие определенного программиста, а не подход современного кодинга. Не надо так.