This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

function argument assigne to ARM register in assembly

Note: This was originally posted on 4th September 2009 at http://forums.arm.com

Hello,

I am developing application on OMAP3530-beagleboard using code sourcery tool chain.
I have used assembly function in my C application.Function has 5 argument it's called from another c function.
function like: void  routine(signed char *a, int b, signed char *c, unsigned char *d, unsigned int *e)
                        {
                           asm volatile{

                                             ........assembly syntaxs....

                            
                                    };
                        }
Here, function argument a to d are stored in r0 to r3 but argument e  either go to stack or store into r4 to r12  register as per called function ?
How can i write assembly syntax in my assembly function to get value of argument e in any specific register so I can use in my function correctly?
How can I write assembly syntax so assembly function parameter passing become independent of called function variable usage means I can use this routine function any other application without doing changed inside the assembly syntax to catch parameter value ?


Thanks,
Parents
  • Note: This was originally posted on 8th September 2009 at http://forums.arm.com

    Have you checked the disassembly of the code when you call the function to check the compiler has done the right thing?  Have you checked the code generated by the compiler for your assembly function?  The code you've shown looks correct for getting the 'e' pointer into r4, but you haven't explained enough for us to help.  What do you do with r4?  Where are you using it?  etc
Reply
  • Note: This was originally posted on 8th September 2009 at http://forums.arm.com

    Have you checked the disassembly of the code when you call the function to check the compiler has done the right thing?  Have you checked the code generated by the compiler for your assembly function?  The code you've shown looks correct for getting the 'e' pointer into r4, but you haven't explained enough for us to help.  What do you do with r4?  Where are you using it?  etc
Children
No data