Hello All, I have found a BUG with loading long long constant:
Here is the source: void Test(long long l) { } int main() { Test(1); } And here is the GDB disassembly: - 0x1166 <main>: mov #2560, SP ;#0x0a00 - 0x116a <main+4>: mov r1, r4 ; 9 Test(1); - 0x116c <main+6>: mov #1, r12 ;subst r3 with As==01 - 0x116e <main+8>: clr r13 ; - 0x1170 <main+10>: mov #1, r14 ;subst r3 with As==01 should be clr r14 ! - 0x1172 <main+12>: mov #1, r15 ;subst r3 with As==01 should be clr r15 ! - 0x1174 <main+14>: call #4416 ;#0x1140 - 0x1178 <main+18>: br #0x117c ; I use msp430-gcc win32 build from 11 Dec 2002. Thanks, Oleg. P.S. Compiling to assembly gives correct asm listing: /*********************** * Function `main' ***********************/ main: .stabn 68,0,8,.LM3-main .LM3: /* prologue: frame size = 0 */ .L__FrameSize_main=0x0 .L__FrameOffset_main=0x0 mov #(__stack-0), r1 /* prologue end (size=2) */ .stabn 68,0,9,.LM4-main .LM4: mov #llo(1), r12 mov #lhi(1), r13 mov #hlo(1), r14 mov #hhi(1), r15 call #Test .stabn 68,0,10,.LM5-main .LM5: /* epilogue: frame size=0 */ br #__stop_progExec__ /* epilogue end (size=4) */ /* function main size 12 (6) */ .Lfe2: .size main,.Lfe2-main /********* End of function ******/