Hi,everybody: Excuse me! English is not my first language. I'm chinese. It is hard to express my meanings clearly with my poor english. I lvoe the mspgcc, but there are some troubles When I useing 16-bit multiplication in f147 and fe427. The result of the 16-bit multiplication should be 32-bit, but the compiler only read the register 0x013a(RESLO). Is this a bug or something wrong when i useing the hardware multiplier? By the way, is it necessary to add "#define __msp430_have_fll" in msp430xE42x.h? (mspgcc-20060407,win2000/xp) mian.c: uint16_t vara,varb,varc; void dispLED(uint16_t); ... int main(void) { ... vara=0x6000; varb=0x5000; varc = varb * vara / 0x7000; dispLED(varc); ... }
Part of the Assemble List: vara=0x6000; 81bc: b2 40 00 60 mov #24576, &0x020c ;#0x6000 81c0: 0c 02 varb=0x5000; 81c2: b2 40 00 50 mov #20480, &0x0208 ;#0x5000 81c6: 08 02 varc = varb * vara / 0x7000; 81c8: 02 12 push r2 ; 81ca: 32 c2 dint 81cc: 03 43 nop 81ce: b2 40 00 50 mov #20480, &0x0132 ;#0x5000 81d2: 32 01 81d4: b2 40 00 60 mov #24576, &0x0138 ;#0x6000 81d8: 38 01 81da: 1f 42 3a 01 mov &0x013a,r15 ;0x013a 81de: 32 41 pop r2 ; 81e0: 0c 4f mov r15, r12 ; 81e2: 3a 40 00 70 mov #28672, r10 ;#0x7000 81e6: b0 12 dc 82 call #-32036 ;#0x82dc 81ea: 0f 4c mov r12, r15 ; 81ec: 82 4c 0a 02 mov r12, &0x020a ; dispLED(varc); 81f0: b0 12 7a 81 call #-32390 ;#0x817a --------------------------------- 雅虎1G免费邮箱百分百防垃圾信 雅虎助手-搜索、杀毒、防骚扰