Hi all, I need some help about assigning two structures.
The simple Function
void CopyStruct(struct A *sSrc, struct A *sDst) { *sDst = *sSrc; }
is translated to
; Variable 'sDst' assigned to Register 'R10/R11' ; Variable 'sSrc' assigned to Register 'R8/R9' 0010 F06A MOV R6,R10 0012 F048 MOV R4,R8 0014 F07B MOV R7,R11 0016 F059 MOV R5,R9 0018 E6F23600 MOV R2,#036H 001C DA000000 E CALLS SEG (?C_WCPYFF),?C_WCPYFF
How is the data copied? Where can I find the implementation of the library Function "C_WCPYFF"? (Keil C166 6.04a)
Thanks for your Help.
Regards, Marcus
I don't think Keil give out their source code. But you don't need it: the copy subroutine is small and you can easily figure out how it works by looking at its disassembly. I suspect in some memory models and/or optimization settings the compiler could inline the copy subroutine. If you need atomicity for thread-safe operation, you should take care of it yourself. The compiler should not disable interrupts silently as this would increase interrupt latency and create a risk of side effects. As for performance, if you think that the standard copy subroutine is suboptimal, right one yourself. That's what I would have done, anyway.
Regards, - mike