Hallo to everyone.
My problem is to have the upper 4 Byte result of a multiply. For example:
unsigned int a=1000000000;//only example value unsigned int b=10000000000; unsigned int c;
the result of a*b = 0x8AC7230489E80000 How to get the upper 4 Bytes: 0x8AC72304 How to get the lower 4 Bytes: 0x89E80000
Can anybody help? I have to programm a super-fast-interrupt-routine for an microcontroller, there is not enough time for floating point.
Hi, here's my solution in Assembler:
//********************************************************************* // A unsigned multiply in ARM Assembler // Returns the upper 4 byte of a 32*32-bit-multiplication //********************************************************************* AREA ?C?bla, CODE, READONLY, ALIGN=2 PUBLIC MUL32x32_ret_upper?A MUL32x32_ret_upper?A PROC CODE32 UMULL R2,R0,R1,R0 ;R0,R2 := R1*R0 bx lr ; return R0 ENDP END //*********************************************************************
Looks good. I like it. Thanks for posting.