<div dir="ltr"><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">I'm trying to implement something similar to this: </span><a href="http://gcc.gnu.org/wiki/SplitStacks" target="_blank" rel="nofollow" style="margin:0px;padding:0px;border:0px;text-decoration:none;color:rgb(102,17,204);font-family:Arial,Helvetica,sans-serif;font-size:13px">http://gcc.gnu.org/wiki/<wbr>SplitStacks</a><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"> in LLVM. </span><br><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">What I'm hoping to do is to be able to inject the following code (in </span><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">x86 asm, callee clean-up calling convention):</span><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">for each function call:</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  lea %foo</span><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">_return, %eax</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  mov %eax, [%esp - calleestackframesize]</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  push arg1</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  push arg2</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  push ...</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  jmp foo</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">foo_return:</span><br style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">  ...</span><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">The problem I have is how to force the LLVM to generates the previous code. How could I modify the calling sequence?</span><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">Any suggestions are appreciated.</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">Thanks!</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px">Shucai</span></div><div><span style="font-family:Arial,Helvetica,sans-serif;font-size:13px"><br></span></div></div>