Hello
I'm using: mcb32stmf103rb6t The uvision3 V3.62c Realview MDK-ARM Version 3.23
In my program i need to multiply a series of 32bit ints. Very simple code:
int test1 = 0x01002000; int test2 = 0x03004000; test1 = test2*test1;
When i compile it and view the disassembly in debug mode is says: 129: int test1 = 0x01002000; 0x08004788 4D3F LDR r5,[pc,#252] 130: int test2 = 0x03004000; 131: 0x0800478A 4C40 LDR r4,[pc,#256] 132: test1 = test2*test1; 133: 0x0800478C 4365 MULS r5,r4,r5
The question then is: Why does it use "MULS" when the instruction does not exits in the cortex-m3? And why does it choose an instruction where the MSB are thrown away when when I need the MSB?
An explanation will be very much appreciated Regards Henrik
S is an optional suffix. If S is specified, the condition code flags are updated on the result of the operation.
So the instruction i s acutally the MUL, but suffix enables the code flag?
That's exactly right.