Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Ассемблер
Автор Сообщение
zzPSIXzz Не на форуме
Новичок
*

Сообщений: 3
Зарегистрирован: 16.01.2011
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #1
Ассемблер
Sad Ребята у меня есть просьба есть задачка кто может её помочь решить..

Напишите программу, которая запрашивает имена двух файлов с клавиатуры, затем открывает первый файл на чтение, а второй на запись, после чего переписывает во второй файл все предложения, так чтобы во втором файле одно предложение занимало одну строку. Разделителями предложений считать точки, восклицательный и вопросительный знаки, многоточие.

Я уже не знаю что с ней делать а завтра вечером сдавать нужно..
16.01.2011 20:19
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #2
RE: Ассемблер
Вообще то ты даже не в тот раздел написал и явно не в тот форум попал. Здесь спрашивают про программирование под Sega Dreamcast.
16.01.2011 23:43
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #3
RE: Ассемблер
Да еще и на ассемблере... под sh4 :-D
16.01.2011 23:58
Найти все сообщения Цитировать это сообщение
zzPSIXzz Не на форуме
Новичок
*

Сообщений: 3
Зарегистрирован: 16.01.2011
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #4
RE: Ассемблер
Мэ.. ну ассемблер есть он... он идёт как в биосе.. и я хз ребят куда уже писать, не сочтите за наглость... просто куда уже только не обращался...
17.01.2011 01:03
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #5
RE: Ассемблер
Извини, конечно, но с ассемблером не хочу иметь дела, это долго парится. Могу только книгу Зубкова посоветовать http://gogsite.ucoz.ru/load/0-0-0-2-20, но она тебе вряд ли поможет Smile, там много примеров.
17.01.2011 01:17
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #6
RE: Ассемблер
Да, мне тоже с ассемблером париться не охота...
17.01.2011 01:33
Найти все сообщения Цитировать это сообщение
zzPSIXzz Не на форуме
Новичок
*

Сообщений: 3
Зарегистрирован: 16.01.2011
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #7
RE: Ассемблер
Вот вот.. в этом то и проблема главная... не кто не хочет заморачивать себя забытым Богов языком программирования.. а помощь так нужна Sad
17.01.2011 02:53
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #8
RE: Ассемблер
Можно нескромный вопрос, а что мне будет за такую помощь? Просто сам сейчас занят написанием курсового, в другом случае обязательно помог бы Smile
17.01.2011 03:05
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #9
RE: Ассемблер
Вот тут все и закрываются наглухо)) Деньги платить никто не хочет, хотя это и нормально, т.к. любая работа должна оплачиваться, и помогать в нашем мире сейчас кому-то за бесплатно...
19.01.2011 16:34
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #10
RE: Ассемблер
Решил не создавать новую тему по ассемблеру. Вобщем, решил я разобраться с sh4 ассемблером и возникли некоторые неясности. Взял за основу код из dcload, собственно сам код с начальной инициализацией crt0 и dcload syscalls. В функции main сделал простенький hello-world. Вот код (пишу по памяти, т.к. нет при себе компа с тулчейном для проверки):
Код:
.global .section .text
           .global _main
_main:
            mov.l write_k,r0
            mov.l #1,r4 // Номер файла для сис.вызова write
            mov.l msg_k,r5
            jsr   @r0
            mov   #13,r6 // Длина сообщения
            nop
            mov.l write_k,r0
            mov.l #1,r4
            mov.l msg_k,r5
            jsr   @r0
            mov   #13,r6
            nop
write_k:
            .long _write
msg_k:
            .long msg
msg:
            .ascii "Hello, world!"
Программа выводит сообщение один раз, после чего вылетает с сообщением о том,
что переход в NULL не возможен. Собственно, как я понимаю,
в регистре PR содержится 0 из-за чего возникает ошибка при выполнении команды rts.
Судя по документации sh4, команда jsr перед переходом сохраняет текущее значение PC в PR для последующего возвращения,
однако этого не происходит. Проверяю все в эмуляторе lxdream в режиме интерпретатора,
т.к. нет пока возможности использовать Windows или сам Дрим.
Это я неправильно понял эту команду или все таки эмулятор сильно неточен?
Пробовал также добавить сохранение pr в стек, sts.l pr,@-r15 , но это не дало результата или опять же я не допонял как использовать.
Хотелось бы узнать о полезных советах и неочевидных нюансах дримовского ассемблера.
09.09.2013 23:31
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7231
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1213 раз(а) в 761 сообщ.
Сообщение: #11
RE: Ассемблер
Да кто бы на нем писал тут Smile)) Лично у меня до него руки так и не доходят толком, да и незачем особо. К слову "rts" я в твоем коде вообще не вижу.

[Изображение: barbers.png]
10.09.2013 07:16
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #12
RE: Ассемблер
Виноват, rts в конце функции write находится. Особо писать на ассемблере не собирають, просто стало интересно как устроенно все на самом низком уровне. Сишный компилятор в абсолютном большинстве случаев удовлетворяет всем потребностям.
10.09.2013 10:18
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #13
RE: Ассемблер
Короче. Сам определил проблему :-) Проблема в неправильной настройке стека, из-за этого регистр pr не сохранялся, а вместо него восстанавливались нули и возникало исключение. Пришлось вручную переписать функцию write так что-бы она хранила предыдущее значение pr в регистре r15(стек не используется) и восстанавливаться из него же.
Поговорил, что называеться, с собой :-) Может кому-то будет полезно.
10.09.2013 22:07
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7231
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1213 раз(а) в 761 сообщ.
Сообщение: #14
RE: Ассемблер
Конечно полезно. Если хочешь я могу подкинуть несколько задачек для тренировки с пользой.

[Изображение: barbers.png]
11.09.2013 08:51
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #15
RE: Ассемблер
Подкинь. Пока время свободное есть, буду заниматься.
11.09.2013 09:10
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7231
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1213 раз(а) в 761 сообщ.
Сообщение: #16
RE: Ассемблер
Можешь переписать soft SPI на ASM, конечно врятли это особо ускорит процесс, но все же не помешало бы мне кажется.
Так же вот еще пара задач для ffmpeg плеера в DS:

Деление буфера (это аудио, AICA не умеет играть такие, ей нужны раздельные каналы):
PHP код:
int16 *sep_buffer[2] = {NULLNULL};

void sep_data(void *bufferint len) {

    
register int16 *bufsrc, *bufdst_left, *bufdst_right;
    
register int cnt;
    
    
cnt len 2;
    
bufsrc = (int16*)buffer;
    
bufdst_left sep_buffer[0];
    
bufdst_right sep_buffer[1];
    
    while(
cnt) {
        *
bufdst_left++ = *bufsrc++;
        *
bufdst_right++ = *bufsrc++;
        
cnt -= 2;
    }


Конвертация 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) {
    
int h height/2;
    
uint8 uv;

    do {
        
uint8 *uptr,*vptr,*yptr,*yptr2;
        
uint8 *tex,*tex2;
        
int w width/2;

        
tex  = (uint8*)tbuftbuf+=tstride;
        
tex2 = (uint8*)tbuftbuf+=tstride;
        
yptr  ybufybuf +=ystride;
        
yptr2 ybufybuf +=ystride;
        
uptr ubufubuf +=ustride;
        
vptr vbufvbuf +=vstride;
        do {
            
= *uptr++;
            
= *vptr++;
            
tex[0] = u;
            
tex[1] = *yptr++;
            
tex[2] = v;
            
tex[3] = *yptr++;
            
tex2[0] = u;
            
tex2[1] = *yptr2++;
            
tex2[2] = v;
            
tex2[3] = *yptr2++;
            
tex+=4;
            
tex2+=4;
        } while(--
w);
    } while(--
h);
}

            
yuvtex(txr->backbuftxr->widthcodec->widthcodec->height,
                
frame->data[0], frame->linesize[0],
                
frame->data[1], frame->linesize[1],
                
frame->data[2], frame->linesize[2]
            ); 

Либо если получится, то можешь попробовать не конвертировать в UYVY422, а просто поделить YUV420P на макроблоки размером 16х16 пикселей. Тогда бы я смог бы использовать хардварный конвертер что есть в PVR (он зараза не кушает ее как есть).
Код:
        ++++++-----------------
        ++++++-----------------
        ++++++-----------------
        -----------------------
        -----------------------

В идеале во всех задачах нужно задействовать кэш SH4, так как они ОЧЕНЬ чувствительны к производительности.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 11.09.2013 в 13:55, отредактировал пользователь SWAT.)
11.09.2013 13:28
Вебсайт Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #17
RE: Ассемблер
В общем пока просто перепишу на ассемблер, а уже потом попробую задействоват кеш, т.к. не разбирался пока с его использованием.
11.09.2013 22:09
Найти все сообщения Цитировать это сообщение
uncle Не на форуме
Новичок
*

Сообщений: 19
Зарегистрирован: 18.04.2005
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #18
RE: Ассемблер
Помнится я когда-то использовал аппаратный YUV конвертер. Только макроблоками вроде медленно получается. Какой-то там другой режим есть. Не помню, надо залезть в архивы...
19.09.2013 17:34
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7231
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1213 раз(а) в 761 сообщ.
Сообщение: #19
RE: Ассемблер
Нету там другого режима...

[Изображение: barbers.png]
19.09.2013 20:46
Вебсайт Найти все сообщения Цитировать это сообщение
uncle Не на форуме
Новичок
*

Сообщений: 19
Зарегистрирован: 18.04.2005
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #20
RE: Ассемблер
Надо же вспомнил. Хоть это и было триста лет тому назад.
https://drive.google.com/folderview?id=0...sp=sharing
По ссылке бенчмарк трансфера через YUV конвертер. Выкладываю в том виде в котором нашел в архиве, но должен быть актуальным. Для DMA трансфера взят за основу косовский. Оригинальный чем-то мне не угодил не помню чем. Режима таки два - этот медленнее, но так как это DMA для проигрывания видео годится. Для использования в реальных условиях еще надо сбросить кэш перед DMA трансфером (угадайте зачем) и это создаст дополнительный овехед плюс к делению на макроблоки.
Существует еще одна марсианская техника вывода на экран YUV фрейма методом смешения палитровых текстур. Она потенциально быстрее, в ней оверхеда на подготовительные операции меньше. Кому интересно читаем это:
http://www.multimedia.cx/yuv-3d-rgb.txt
там и пример есть.

Вот теперь точка.
21.09.2013 12:04
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 5 Гость(ей)