IAR:<br />long longMul(long lX, long lY)<br />{<br /> __asm(" smull r0, r1, r0, r1
"<br /> " lsrs r0, r0, #16
"<br /> " orr r0, r0, r1, lsl #16
"<br /> " bx lr");<br /><br /> return(0); /* 不会跑到这里,用于防止编译警告!*/<br />}<br /><br /><br />GCC:<br />static long __attribute__((naked)) longMul(long lX, long lY)<br />{<br /> __asm(" smull r0, r1, r0, r1
"<br /> " lsrs r0, r0, #16
"<br /> " orr r0, r0, r1, lsl #16
"<br /> " bx lr");<br /><br /> return(0); /* 不会跑到这里,用于防止编译警告!*/<br />}<br /><br /><br />Keil:<br />__asm long longMul(long lX, long lY)<br />{<br /> smull r0, r1, r0, r1;<br /> lsrs r0, r0, #16;<br /> orr r0, r0, r1, lsl #16;<br /> bx lr;<br />}<br /><br /><br />(zlgarm_zsg)<br /><br />
|