[an error occurred while processing this directive]
А почему это (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено SM 05 июля 2005 г. 18:44
В ответ на: Столь же эффективно, как на ассемблере не получится. Вопрос в том, насколько отправлено Bill 05 июля 2005 г. 18:18

битовые поля являются беззнаковыми? Вот для тесту скомпилячил (чем под рукой было, CCS 55xx):


typedef struct _test_struct {
int field2:4;
unsigned int field1:12;
} TEST_STRUCT;


int tst(TEST_STRUCT *pTestStruct)
{

return pTestStruct->field1+pTestStruct->field2;

}

получил нижеследующее, откуда однозначно видно, что тот, кто обработан AND'ом, явно unsigned, а SFTS'ом (арифм. сдвиг) - явно signed.


_tst:
MOV *AR0, AR1 ; |11|

AND #0x0fff, AR1, AR1 ; |11|
|| MOV AR1, AC0

SFTS AC0, #-12, AC0 ; |11|
MOV AC0, T0 ; |11|

RET ; |11|
|| ADD AR1, T0 ; |11|


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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru