More info on this question:
It seems that SDCC will generate useless asm code when the bitwise code is
enclosed in for loop. If the code is not in a for loop, the asm codes are
the same. Does anyone have any ideas? Thanks ;)
On Mon, Mar 29, 2010 at 9:09 AM, Grissiom <[email protected]> wrote:
> Hello,
>
> When I use bitwise operation to get the high/low byte of a 16bit int:
> =========================================
> IAP_ADDRH = (unsigned int)src >>8;
>
> IAP_ADDRL = (unsigned int)src & 0x00FF;
> =========================================
> SDCC gives me the following asm code:
> =========================================
> 488 ; eeprom.c:21: IAP_ADDRH = (unsigned int)src >> 8;^M
>
> 489 mov ar0,r5
>
> 490 mov ar1,r6
>
> 491 mov _IAP_ADDRH,r1
>
> 492 ; eeprom.c:22: IAP_ADDRL = (unsigned int)src & 0x00FF;^M
>
> 493 mov r1,#0x00
>
> 494 mov _IAP_ADDRL,r0
> =========================================
> I think there are many useless asm code. This is the second version:
> =========================================
> 2 39 IAP_ADDRH = *((unsigned char *)&dest);
>
> 2 40 IAP_ADDRL = *((unsigned char *)&dest + 1);
> =========================================
> which gives better asm code:
> =========================================
> 555 ; eeprom.c:39: IAP_ADDRH = *((unsigned char *)&dest);^M
>
> 556 mov _IAP_ADDRH,_memcpy_toeep_dest_1_1
>
> 557 ; eeprom.c:40: IAP_ADDRL = *((unsigned char *)&dest + 1);^M
>
> 558 mov _IAP_ADDRL,(_memcpy_toeep_dest_1_1 + 0x0001)
> =========================================
> But the C code is ugly. Is there a better way? Thanks in advance.
>
> --
> Cheers,
> Grissiom
>
--
Cheers,
Grissiom
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user