Ассемблер - Версия для печати +- DC-SWAT Forum (http://www.dc-swat.ru/forum) +-- Форум: Sega Dreamcast (/forum-2.html) +--- Форум: Programming (/forum-8.html) +--- Тема: Ассемблер (/thread-1451.html) Страниц: 1 2 |
Ассемблер - zzPSIXzz - 16.01.2011 20:19 Ребята у меня есть просьба есть задачка кто может её помочь решить.. Напишите программу, которая запрашивает имена двух файлов с клавиатуры, затем открывает первый файл на чтение, а второй на запись, после чего переписывает во второй файл все предложения, так чтобы во втором файле одно предложение занимало одну строку. Разделителями предложений считать точки, восклицательный и вопросительный знаки, многоточие. Я уже не знаю что с ней делать а завтра вечером сдавать нужно.. RE: Ассемблер - sc_maxim - 16.01.2011 23:43 Вообще то ты даже не в тот раздел написал и явно не в тот форум попал. Здесь спрашивают про программирование под Sega Dreamcast. RE: Ассемблер - Rio - 16.01.2011 23:58 Да еще и на ассемблере... под sh4 :-D RE: Ассемблер - zzPSIXzz - 17.01.2011 01:03 Мэ.. ну ассемблер есть он... он идёт как в биосе.. и я хз ребят куда уже писать, не сочтите за наглость... просто куда уже только не обращался... RE: Ассемблер - sc_maxim - 17.01.2011 01:17 Извини, конечно, но с ассемблером не хочу иметь дела, это долго парится. Могу только книгу Зубкова посоветовать http://gogsite.ucoz.ru/load/0-0-0-2-20, но она тебе вряд ли поможет , там много примеров. RE: Ассемблер - Rio - 17.01.2011 01:33 Да, мне тоже с ассемблером париться не охота... RE: Ассемблер - zzPSIXzz - 17.01.2011 02:53 Вот вот.. в этом то и проблема главная... не кто не хочет заморачивать себя забытым Богов языком программирования.. а помощь так нужна RE: Ассемблер - sc_maxim - 17.01.2011 03:05 Можно нескромный вопрос, а что мне будет за такую помощь? Просто сам сейчас занят написанием курсового, в другом случае обязательно помог бы RE: Ассемблер - Rio - 19.01.2011 16:34 Вот тут все и закрываются наглухо)) Деньги платить никто не хочет, хотя это и нормально, т.к. любая работа должна оплачиваться, и помогать в нашем мире сейчас кому-то за бесплатно... RE: Ассемблер - sc_maxim - 09.09.2013 23:31 Решил не создавать новую тему по ассемблеру. Вобщем, решил я разобраться с sh4 ассемблером и возникли некоторые неясности. Взял за основу код из dcload, собственно сам код с начальной инициализацией crt0 и dcload syscalls. В функции main сделал простенький hello-world. Вот код (пишу по памяти, т.к. нет при себе компа с тулчейном для проверки): Код: .global .section .text что переход в NULL не возможен. Собственно, как я понимаю, в регистре PR содержится 0 из-за чего возникает ошибка при выполнении команды rts. Судя по документации sh4, команда jsr перед переходом сохраняет текущее значение PC в PR для последующего возвращения, однако этого не происходит. Проверяю все в эмуляторе lxdream в режиме интерпретатора, т.к. нет пока возможности использовать Windows или сам Дрим. Это я неправильно понял эту команду или все таки эмулятор сильно неточен? Пробовал также добавить сохранение pr в стек, sts.l pr,@-r15 , но это не дало результата или опять же я не допонял как использовать. Хотелось бы узнать о полезных советах и неочевидных нюансах дримовского ассемблера. RE: Ассемблер - SWAT - 10.09.2013 07:16 Да кто бы на нем писал тут )) Лично у меня до него руки так и не доходят толком, да и незачем особо. К слову "rts" я в твоем коде вообще не вижу. RE: Ассемблер - sc_maxim - 10.09.2013 10:18 Виноват, rts в конце функции write находится. Особо писать на ассемблере не собирають, просто стало интересно как устроенно все на самом низком уровне. Сишный компилятор в абсолютном большинстве случаев удовлетворяет всем потребностям. RE: Ассемблер - sc_maxim - 10.09.2013 22:07 Короче. Сам определил проблему :-) Проблема в неправильной настройке стека, из-за этого регистр pr не сохранялся, а вместо него восстанавливались нули и возникало исключение. Пришлось вручную переписать функцию write так что-бы она хранила предыдущее значение pr в регистре r15(стек не используется) и восстанавливаться из него же. Поговорил, что называеться, с собой :-) Может кому-то будет полезно. RE: Ассемблер - SWAT - 11.09.2013 08:51 Конечно полезно. Если хочешь я могу подкинуть несколько задачек для тренировки с пользой. RE: Ассемблер - sc_maxim - 11.09.2013 09:10 Подкинь. Пока время свободное есть, буду заниматься. RE: Ассемблер - SWAT - 11.09.2013 13:28 Можешь переписать soft SPI на ASM, конечно врятли это особо ускорит процесс, но все же не помешало бы мне кажется. Так же вот еще пара задач для ffmpeg плеера в DS: Деление буфера (это аудио, AICA не умеет играть такие, ей нужны раздельные каналы): PHP код: int16 *sep_buffer[2] = {NULL, NULL}; Конвертация YUV420P в UYVY422: PHP код: void yuvtex(uint16 *tbuf,int tstride,unsigned width,unsigned height,uint8 *ybuf,int ystride,uint8 *ubuf,int ustride,uint8 *vbuf,int vstride) { Либо если получится, то можешь попробовать не конвертировать в UYVY422, а просто поделить YUV420P на макроблоки размером 16х16 пикселей. Тогда бы я смог бы использовать хардварный конвертер что есть в PVR (он зараза не кушает ее как есть). Код: ++++++----------------- В идеале во всех задачах нужно задействовать кэш SH4, так как они ОЧЕНЬ чувствительны к производительности. RE: Ассемблер - sc_maxim - 11.09.2013 22:09 В общем пока просто перепишу на ассемблер, а уже потом попробую задействоват кеш, т.к. не разбирался пока с его использованием. RE: Ассемблер - uncle - 19.09.2013 17:34 Помнится я когда-то использовал аппаратный YUV конвертер. Только макроблоками вроде медленно получается. Какой-то там другой режим есть. Не помню, надо залезть в архивы... RE: Ассемблер - SWAT - 19.09.2013 20:46 Нету там другого режима... RE: Ассемблер - uncle - 21.09.2013 12:04 Надо же вспомнил. Хоть это и было триста лет тому назад. https://drive.google.com/folderview?id=0B70bJ1GwUZydOHJ5anpVTUdRbEk&usp=sharing По ссылке бенчмарк трансфера через YUV конвертер. Выкладываю в том виде в котором нашел в архиве, но должен быть актуальным. Для DMA трансфера взят за основу косовский. Оригинальный чем-то мне не угодил не помню чем. Режима таки два - этот медленнее, но так как это DMA для проигрывания видео годится. Для использования в реальных условиях еще надо сбросить кэш перед DMA трансфером (угадайте зачем) и это создаст дополнительный овехед плюс к делению на макроблоки. Существует еще одна марсианская техника вывода на экран YUV фрейма методом смешения палитровых текстур. Она потенциально быстрее, в ней оверхеда на подготовительные операции меньше. Кому интересно читаем это: http://www.multimedia.cx/yuv-3d-rgb.txt там и пример есть. Вот теперь точка. |