We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
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