По моему никаких странностей. Компилятор видит #pragma pack, и все
данные считает невыровненными, он не такой умный, чтобы считать
смещение. А offsetof() его путает окончательно, он даже варнинг не
выкидывает, и делает все в лоб. /
84 *((long*)(&(OutReg[44])))=*((long*)((char*)&Eeprom + offsetof(eeprom_t, Plan1)));
\ 000001F6 0x3158 ADDS R1,R1,#+88
\ 000001F8 0x6BC2 LDR R2,[R0, #+60]
\ 000001FA 0x600A STR R2,[R1, #+0]
*((long*)(&(OutReg[44])))=Eeprom.Plan1;
\ 000001F6 0x0020 MOVS R0,R4
\ 000001F8 0x303C ADDS R0,R0,#+60
\ 000001FA 0x.... 0x.... BL __aeabi_uread4
\ 000001FE 0x0029 MOVS R1,R5
\ 00000200 0x3158 ADDS R1,R1,#+88
\ 00000202 0x6008 STR R0,[R1, #+0]
/