[an error occurred while processing this directive]
Непонятки с C6xxx Linear assmebly
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено DM642 28 августа 2005 г. 02:13

Вот есть такой код написанный на Linear Assembly для DM642:

---------------------------------------------------------------
ldw *data[1], next_val ;preload next value
|| cmplt res1, 0, flag_less ;get sign of the result
|| cmplt res2b, 0, flag_less2

[flag_less] neg res1, res1
|| [flag_less2] neg res2b, res2b ;operate on the second variable

shru res1, 16, res1
|| shru res2b, 16, res2b ;operate on the second variable

[flag_less] neg res1, tmp
||[!flag_less] mv res1, tmp ;get valid signed result
||[flag_less2] neg res2b, tmp2
||[!flag_less2] mv res2b, tmp2 ;get valid signed result
----------------------------------------------------------------

А вот че он сгенерил:
-----------------------------------------------------------------

LDW .D1T1 *+data(4),next_val ; |22| preload next value
NOP 2
CMPGT .L1 0x0,res1',flag_less ; |22| get sign of the result
CMPGT .L2 0x0,res2b,flag_less2 ; |22|

[ flag_less] NEG .L1 res1',res1' ; |26|
|| [ flag_less2] NEG .L2 res2b,res2b ; |26| operate on the second variable

SHRU .S2 res2b,0x10,res2b' ; |29| operate on the second variable
|| SHRU .S1 res1',0x10,res1' ; |29|

[!flag_less2] MV .L2 res2b',tmp2 ; |32| get valid signed result
|| [ flag_less2] NEG .S2 res2b',tmp2 ; |32|
|| [ flag_less] NEG .L1 res1',tmp ; |32|
|| [!flag_less] MV .S1 res1',tmp ; |32| get valid signed result
--------------------------------------------------------

Спрашивается нахрена NOP 2 после LDW если резултат LWD нужен аж хрен знает где в конце loop'a ?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru