[an error occurred while processing this directive]
|
битовые поля являются беззнаковыми? Вот для тесту скомпилячил (чем под рукой было, 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, AC0SFTS AC0, #-12, AC0 ; |11|
MOV AC0, T0 ; |11|RET ; |11|
|| ADD AR1, T0 ; |11|
E-mail: info@telesys.ru