I'm writing an application in which I want to obtain the code of a particular function during runtime. Obtaining the code of a function is not a problem, as I just used function pointer to obtain the start address of the function. However, I'm not able to determine the end of the function. I can solve this if I can obtain the size of the function and store it at a known memory location.
Is it possible to accomplish the above using:
1. ASSEMBLY: Use labels in assembly code to find the size of the function. 2. LINKER SCRIPT/SCATTER FILES: Use linker scripts or scatter files to find the size of the function.
Any help in this regard is highly appreciated.
I'm writing an application in which I want to obtain the code of a particular function during runtime.
And why would you want to do that? "Function size" may not be such a straightforward concept due to a number of reasons. It is not very useful in itself. Why don't you descride the problem you are actually trying to solve?
Likely copying some code to RAM, programming a FLASH memory.
Often it makes sense to express the problem that really needs solving, rather than focus on a specific solution path that may/may not be the most appropriate.
Thank you for replying.
Basically I overwrite the code of one function with the code of another.
This doesn't sound like a good idea. I hope you understand all the problems this might create.
Allocate a block of RAM. Fill with code. Call through function pointer. Ignore size of ant function in your flash.