On 2012-01-18 15:08, Gennadiy Poryev wrote:
Do you think it's granted that there is only one return in a function ?
Maybe optimization or "exit" could create additional returns
Actually I do. Because I write this function :)
It uses quite a lot of loops and ifs, but no exits.
And what I need is a reliable way to get its code size at runtime without 
manually inspecting it on every rebuild.

I had similar problem a year and a half ago. I ended up looking for "ret" using disassembler.

Regarding one ret per function, I got this response from Jonas at that time:

On 2010-07-18 15:42, Jonas Maebe wrote:
On 18 Jul 2010, at 13:14, Žilvinas Ledas wrote:

I want to use it this way:
1) Gel all @unitname.function addresses.
2) Use disassembler to find nearest next RET.
3) Then I assume that I have start and end of the function in the binary file.

It works at least for the concept-showing app with some functions and enabled 
optimizations when compiling. Do I have some conceptual flaw?
Yes: there is no guarantee that a function will contain only one "ret" (it is 
that way currently for compiler-generated code, but that can change at any time).


Jonas

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to