From: SourceForge.net <no...@so...> - 2009-12-23 18:40:36
|
Bugs item #2920235, was opened at 2009-12-24 03:40 Message generated for change (Tracker Item Submitted) made by kazu1108 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=2920235&group_id=599 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: pic14 target Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: kazu1108 (kazu1108) Assigned to: Nobody/Anonymous (nobody) Summary: The operation at Cast is amusing from the array to the point Initial Comment: 17 a = 0x1234; 18 19 /* This is fail case */ 20 *(unsigned short *)(&m_work[OFFSET_A]) = 0; 21 *(unsigned short *)(&m_work[OFFSET_B]) = a; 22 b = *(unsigned short *)(&m_work[OFFSET_A]); 23 hoge(b); I expect the thing that two bytes change. However, it changes only by one byte. A part of generated asm is shown below. 24_main ;Function start 125; 2 exit points 126;gen.c:5891: size=0/1, offset=0, AOP_TYPE(res)=8 127; .line 20; "test.c" *(unsigned short *)(&m_work[OFFSET_A]) = 0; 128 BANKSEL _m_work 129 CLRF (_m_work + 0) 130;gen.c:5891: size=0/1, offset=0, AOP_TYPE(res)=8 131; .line 21; "test.c" *(unsigned short *)(&m_work[OFFSET_B]) = a; 132 MOVLW 0x34 133 MOVWF (_m_work + 2) 134; .line 22; "test.c" b = *(unsigned short *)(&m_work[OFFSET_A]); 135 MOVF (_m_work + 0),W 136; .line 23; "test.c" hoge(b); 137 BANKSEL r0x100A 138 MOVWF r0x100A 139 MOVWF STK00 140 MOVF r0x100B,W 141 PAGESEL _hoge 142 CALL _hoge 143 PAGESEL $ version:SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.9.4 #5573 (Dec 1 2009) (CYGWIN) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100599&aid=2920235&group_id=599 |