ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
154801 Топик полностью
testerplus (24.04.2009 20:05, просмотров: 231) ответил AlexBi на Извиняюсь, объявление параметра как volatile я не заметил.
Смещение бита можно вычислить, но это крайний случай. Мне как-то понадобилось в асм'е работать с битами из структуры (я код старался максимально ужать по скорости).  // Глобальные переменные, которые будут содержать смещение бита // в структуре и его маску unsigned int f1_pos, f1_mask; // Эта функция вызывается один раз из main'а void get_f1_pos (void) { struct SS ss0; struct SS ss1; unsigned int *p0, *p1; ss0 = ss1; ss0.f1 = 0; ss1.f1 = 1; // На данный момент ss0 и ss1 различаются только одним битом f1 p0 = (unsigned int*)&ss0; p1 = (unsigned int*)&ss1; while (*p0 == *p1) // Ищем слово, где структуры различаются { p0++; p1++; } f1_mask = *p0 ^ *p1; // маска f1_pos = (int)p0 - (int)&ss0; // позиция } А дальше в asm'е для адресации бита уже работал с глобальными переменными f1_pos и f1_mask.