<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx</link><description>Okay, here we go: The 32-bit x86 calling conventions. (By the way, in case people didn't get it: I'm only talking in the context of calling conventions you're likely to encounter when doing Windows programming or which are used by Microsoft compilers.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48623</link><pubDate>Thu, 08 Jan 2004 15:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48623</guid><dc:creator>Ian Hanschen</dc:creator><description>Raymond,&lt;br&gt;Great series.  Do you know the what &amp;amp; when as far as the 0xDCBAABCD cardinal passed in when calling wndprocs?&lt;br&gt;-Ian</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48625</link><pubDate>Thu, 08 Jan 2004 15:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48625</guid><dc:creator>Raymond Chen</dc:creator><description>&amp;quot;More on this in a future entry.&amp;quot;</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48627</link><pubDate>Thu, 08 Jan 2004 15:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48627</guid><dc:creator>Ian Hanschen</dc:creator><description>Sorry :)&lt;br&gt;-Ian</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48636</link><pubDate>Thu, 08 Jan 2004 16:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48636</guid><dc:creator>Frederik Slijkerman</dc:creator><description>Honorable mention for Borland's __fastcall convention, borrowed from Delphi, which passes the first three parameters in EAX, EDX, ECX and can be slightly more efficient.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48685</link><pubDate>Thu, 08 Jan 2004 17:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48685</guid><dc:creator>Florian</dc:creator><description>Hmmm, you said that for __cdecl the parameters are pushed from right to left and for __stdcall they are pushed from left to right. But in the diagram on MSDN the stack looks identical for both calling conventions. I assume you are right and they are wrong?</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48696</link><pubDate>Thu, 08 Jan 2004 18:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48696</guid><dc:creator>Raymond Chen</dc:creator><description>D'oh, you're right. __stdcall goes right to left, just like __cdecl.  I'll fix the body text.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48757</link><pubDate>Thu, 08 Jan 2004 20:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48757</guid><dc:creator>Gene Hamilton</dc:creator><description>I was stepping through some code with the debugger to take a look for myself these calling conventions in action.  (using VS.NET 2002 btw)  And I noticed something odd.  The 'call' instruction jumpes to an address which contains a single jmp instruction, which in turn 'jmp's to the real function.  This is only in the 'Debug' version, not 'Release'&lt;br&gt;&lt;br&gt;I also noticed after the call instruction the address it moves to, there are other jmp instructions in surrounding memory to other functions.&lt;br&gt;&lt;br&gt;Here is an example.&lt;br&gt;&lt;br&gt;...&lt;br&gt;call myfunc&lt;br&gt;...&lt;br&gt;&lt;br&gt;myfunc:&lt;br&gt;jmp realmyfunc&lt;br&gt;&lt;br&gt;realmyfunc:&lt;br&gt;...&lt;br&gt;...&lt;br&gt;ret&lt;br&gt;&lt;br&gt;My Question: What is the purpose of this jmp instruction between call and the actual function?  I might be answering my own question here, but here it goes.&lt;br&gt;&lt;br&gt;I know if you include __declspec(dllimport) to an imported function from a dll, the code looks something like this:&lt;br&gt;&lt;br&gt;CALL DWORD PTR [0x00405030]&lt;br&gt;&lt;br&gt;otherwise if you don't it generates this:&lt;br&gt;&lt;br&gt;CALL 0x0040100C&lt;br&gt;•••&lt;br&gt;0x0040100C:&lt;br&gt;JMP       DWORD PTR [0x00405030]&lt;br&gt;&lt;br&gt;Similar to was I was seeing.  I know this happens because the compiler does not know if the function is static or in a dll.  So it generates code like this CALL XXXXXXXX and leaves the linker to fill in the rest.&lt;br&gt;&lt;br&gt;Or is it done for another reason?</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48761</link><pubDate>Thu, 08 Jan 2004 20:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48761</guid><dc:creator>Raymond Chen</dc:creator><description>You probably turned on incremental linking.&lt;br&gt;&lt;br&gt;&lt;a target="_new" href="http://msdn.microsoft.com/library/en-us/vccore98/HTML/_core_.2f.incremental.asp"&gt;http://msdn.microsoft.com/library/en-us/vccore98/HTML/_core_.2f.incremental.asp&lt;/a&gt;&lt;br&gt;&lt;br&gt;On of the consequences of incremental linking called out in the documentation is &amp;quot;May contain jump thunks to handle relocation of functions to new addresses.&amp;quot;&lt;br&gt;&lt;br&gt;If you understand what incremental linking is trying to do, the need for this becomes more obvious.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48776</link><pubDate>Thu, 08 Jan 2004 21:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48776</guid><dc:creator>Terry Denham</dc:creator><description>This may be off topic but does the virtual function table behave similarly to these jump to address and then jump to final address like the incremental linking comment above.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48794</link><pubDate>Thu, 08 Jan 2004 22:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48794</guid><dc:creator>Mr. X</dc:creator><description>Calling conventions are stupid. Any good compilers (such as GCC) won't have them, except for the mandatory 'extern &amp;quot;C&amp;quot;' construct so that C++ programs can call C functions correctly.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48795</link><pubDate>Thu, 08 Jan 2004 22:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48795</guid><dc:creator>Raymond Chen</dc:creator><description>Clearly you need a calling convention or the caller and callee could never communicate with each other. Perhaps you mean &amp;quot;multiple calling conventions are stupid&amp;quot;.  The hard part then is choosing the &amp;quot;one true&amp;quot; calling convention that works great for everybody.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48803</link><pubDate>Thu, 08 Jan 2004 22:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48803</guid><dc:creator>Mike Dimmick</dc:creator><description>IIRC, the virtual function table is normally implemented simply as a table of addresses. The compiled code dereferences the vptr, which is the first member of the object, to locate the vtbl, then makes an indirect call through that.&lt;br&gt;&lt;br&gt;On some processors (e.g. the Itanium) the table also includes a global pointer value (2MB of module-relative data can be accessed via this pointer).&lt;br&gt;&lt;br&gt;I was about to ask why x86 has three calling conventions on 32-bit desktop Windows, but I assume it's for much the same reasons as 16-bit code did (which you mentioned in part 1).&lt;br&gt;&lt;br&gt;IIRC, Windows CE on x86 only ever uses __cdecl, unless you're using one of the old (Pocket PC 2000 or earlier) emulators, in which case it uses __stdcall (probably a misconfiguration when compiled...)</description></item><item><title>New and Notable 33</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48852</link><pubDate>Fri, 09 Jan 2004 04:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48852</guid><dc:creator>Sam Gentile's Blog</dc:creator><description /></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48862</link><pubDate>Fri, 09 Jan 2004 01:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48862</guid><dc:creator>asdf</dc:creator><description>GCC has them, what are you talking about? &lt;a target="_new" href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function%20Attributes"&gt;http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function%20Attributes&lt;/a&gt;&lt;br&gt;&lt;br&gt;Search for stdcall, cdecl, fastcall, etc.&lt;br&gt;</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48899</link><pubDate>Fri, 09 Jan 2004 05:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48899</guid><dc:creator>project</dc:creator><description>In &amp;quot;thiscall&amp;quot; you write that function names are decorated with information about every parameter in order to allow overloading. I think this should be also true about __cdecl functions that are not extern &amp;quot;C&amp;quot;. Am I right?</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#48902</link><pubDate>Fri, 09 Jan 2004 05:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:48902</guid><dc:creator>Raymond Chen</dc:creator><description>You're right, I confused calling convention with C++ decoration. Sorry, everybody.</description></item><item><title>Why do member functions need to be </title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#49030</link><pubDate>Fri, 09 Jan 2004 18:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:49030</guid><dc:creator>The Old New Thing</dc:creator><description /></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#49312</link><pubDate>Sat, 10 Jan 2004 03:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:49312</guid><dc:creator>CW user</dc:creator><description>Anyone using CodeWarrior?&lt;br&gt;&lt;br&gt;When I had code like this:&lt;br&gt;#define EXPORT __declspec(dllexport)&lt;br&gt;EXPORT BOOL CALLBACK EdrCenterText(...)&lt;br&gt;the function GetProcAddress would return NULL.&lt;br&gt;&lt;br&gt;But call like this:&lt;br&gt;GetProcAddress (..., &amp;quot;_EdrCenterText@16&amp;quot;);&lt;br&gt;worked and I could use the DLL.&lt;br&gt;&lt;br&gt;And then I changed the declaration to&lt;br&gt;EXPORT BOOL __cdecl EdrCenterText (...)&lt;br&gt;and &lt;br&gt;GetProcAddress (..., &amp;quot;EdrCenterText&amp;quot;)&lt;br&gt;worked as advertised.&lt;br&gt;&lt;br&gt; I do not have VC to check this but it all seems odd to me!&lt;br&gt;&lt;br&gt;</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#49335</link><pubDate>Sat, 10 Jan 2004 04:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:49335</guid><dc:creator>project</dc:creator><description>To make the first GetProcAddress work, you should have a .def file like this:&lt;br&gt;EXPORTS&lt;br&gt;   EdrCenterText</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#49355</link><pubDate>Sat, 10 Jan 2004 08:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:49355</guid><dc:creator>Raymond Chen</dc:creator><description>CW: The GetProcAddress issue is the subject that I alluded to in the opening paragraph of Part 2 of the calling conventions series. I'll expand on it in a future entry.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#49446</link><pubDate>Sat, 10 Jan 2004 17:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:49446</guid><dc:creator>WC user</dc:creator><description>I've looked back to Part 2 and now I apologise if I've had spoiled &lt;br&gt;something, Raymond.&lt;br&gt;&lt;br&gt;It was just something that bothered me since last summer when&lt;br&gt;it was for the first time I looked for some DLL stuff in Petzold and&lt;br&gt;then spent whole night to force GetProcAddress() return&lt;br&gt;something.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#49448</link><pubDate>Sat, 10 Jan 2004 17:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:49448</guid><dc:creator>Raymond Chen</dc:creator><description>No problem. You couldn't have known. It's amusing to me that somebody guessed what I was referring to there completely by accident.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#57965</link><pubDate>Mon, 12 Jan 2004 19:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:57965</guid><dc:creator>Ben Combee</dc:creator><description>&amp;lt;blockquote&amp;gt;Anyone using CodeWarrior?&lt;br&gt;&lt;br&gt;When I had code like this:&lt;br&gt;#define EXPORT __declspec(dllexport)&lt;br&gt;EXPORT BOOL CALLBACK EdrCenterText(...)&lt;br&gt;the function GetProcAddress would return NULL.&amp;lt;/blockquote&amp;gt;&lt;br&gt;&lt;br&gt;The problem is that you're not putting the &amp;quot;__declspec(dllexport)&amp;quot; on the function, but instead putting it on the type.&lt;br&gt;&lt;br&gt;If you'd written&lt;br&gt;&lt;br&gt;#define EXPORT __declspec(dllexport)&lt;br&gt;BOOL CALLBACK EXPORT EdrCenterText(...)&lt;br&gt;&lt;br&gt;it would have been OK.  I know -- I once was the x86 compiler engineer at Metrowerks, and I had my hand at implementing the declspec handling code.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#58017</link><pubDate>Mon, 12 Jan 2004 23:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:58017</guid><dc:creator>CW user</dc:creator><description> Seems like I could have asked if there's &amp;quot;Anyone here who wrote &lt;br&gt;CodeWarrior?&amp;quot;&lt;br&gt; Just shows how relevant Raymond's blog is.&lt;br&gt;&lt;br&gt; And, no, reordering keywords didn't help. Still worked only with _ and&lt;br&gt;@16 mangling.&lt;br&gt;&lt;br&gt; And as an interresting note, all this time I was casting to CALLBACK function pointer:&lt;br&gt;EXPORT BOOL __cdecl EdrCenterText (...);&lt;br&gt;typedef BOOL (CALLBACK *EdrCenterTextProcType) (...);&lt;br&gt;and then later in code:&lt;br&gt;EdrCenterTextProcType plugProc;&lt;br&gt;plugProc = (EdrCenterTextProcType) GetProcAddress (..., &amp;quot;EdrCenterText&amp;quot;);&lt;br&gt;&lt;br&gt; This code worked OK, even though I casted __cdecl proc to __stdcall &lt;br&gt;proc. I am not much of an expert for stack handling and calling&lt;br&gt;conventions, but I would like to know for sure if this is bad in any way.&lt;br&gt; (Windows or my app never crashed, but maybe I did't wait long&lt;br&gt;enough)&lt;br&gt;</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#58029</link><pubDate>Mon, 12 Jan 2004 23:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:58029</guid><dc:creator>Raymond Chen</dc:creator><description>You people are too fast for me. I have an entry planned for Thursday to discuss this.</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#58278</link><pubDate>Tue, 13 Jan 2004 18:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:58278</guid><dc:creator>Raymond Chen</dc:creator><description>&amp;quot;does the virtual function table behave similarly to these jump to address and then jump to final address like the incremental linking comment above&amp;quot;&lt;br&gt;&lt;br&gt;The jump-to-jump is an artifact of incremental linking and is not part of the vtable layout rules.</description></item><item><title>Calling Convention</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#66753</link><pubDate>Tue, 03 Feb 2004 21:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:66753</guid><dc:creator>Simply Patrick</dc:creator><description>??????,??????????? ?????????? calling convention: The history of calling conventions, part 1 The history of calling conventions, part 2 The history of calling conventions, part 3 The history of calling conventions, part 4: ia64 Why do member functions need to be...</description></item><item><title>re: The history of calling conventions, part 3</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#143025</link><pubDate>Thu, 27 May 2004 13:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:143025</guid><dc:creator>Benjamin Munayco</dc:creator><description>Hi,&lt;br&gt;&lt;br&gt;PVCAM is an ANSI C library of camera control and data acquisition functions.&lt;br&gt;I'm trying to use PVCAM functions on my computer running under Windows XP but I didn't manage to.&lt;br&gt;The problem occures when I run the project in my CodeWarrior IDE which is the programming environment I choose in order to compile my&lt;br&gt;project.&lt;br&gt;The compiling process works well, but when I link the project that's the message I'm given back:&lt;br&gt;&lt;br&gt;&amp;quot; Error   : Undefined symbol: '__stdcall(0) pl_pvcam_init &lt;br&gt;(_pl_pvcam_init@0)'&lt;br&gt;referenced from '_main' in Acquisition.c:15&lt;br&gt;Acquisition.c line 15 &amp;quot;&lt;br&gt;&lt;br&gt;(&amp;quot;Acquistion.c&amp;quot; is my C code source)&lt;br&gt;&lt;br&gt;and I get the same error for each PVCAM functions (pl_pvcam_uninit, pl_seq_exp, etc.)&lt;br&gt;I am a beginner in programming on CW 8, and I don't really know where to search the problem.&lt;br&gt;This could be due to the linker, the IDE, a confusion between libraries...&lt;br&gt;Could you help me with this topic?&lt;br&gt;&lt;br&gt;Thanks.&lt;br&gt;</description></item><item><title>Diagnosing a problem with calling conventions</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#173939</link><pubDate>Tue, 06 Jul 2004 17:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:173939</guid><dc:creator>The Old New Thing</dc:creator><description>Putting together some skills you've already learned.</description></item><item><title>The history of calling conventions</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#175951</link><pubDate>Thu, 08 Jul 2004 06:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:175951</guid><dc:creator>Flier's Sky</dc:creator><description>The history of calling conventions</description></item><item><title>Using the Profiling API Enter/Leave Function Hooks</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#450507</link><pubDate>Thu, 11 Aug 2005 22:20:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:450507</guid><dc:creator>Jonathan Keljo's CLR Blog</dc:creator><description>Ever since v1, corprof.idl has contained the following ominous comment above the typedefs for FunctionEnter/Leave/Tailcall....</description></item><item><title>Using the Profiling API Enter/Leave Function Hooks</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#450543</link><pubDate>Thu, 11 Aug 2005 23:47:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:450543</guid><dc:creator>Jonathan Keljo's CLR Blog</dc:creator><description>Ever since v1, corprof.idl has contained the following ominous comment above the typedefs for FunctionEnter/Leave/Tailcall....</description></item><item><title>Using the Profiling API Enter/Leave Function Hooks</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#451851</link><pubDate>Mon, 15 Aug 2005 21:55:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:451851</guid><dc:creator>Jonathan Keljo's CLR Blog</dc:creator><description>Ever since v1, corprof.idl has contained the following ominous comment above the typedefs for FunctionEnter/Leave/Tailcall....</description></item><item><title>Using the Profiling API Enter/Leave Function Hooks</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#463663</link><pubDate>Sun, 11 Sep 2005 21:13:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:463663</guid><dc:creator>Jonathan Keljo's CLR Blog</dc:creator><description>Ever since v1, corprof.idl has contained the following ominous comment above the typedefs for FunctionEnter/Leave/Tailcall....</description></item><item><title>The history of calling conventions</title><link>http://blogs.msdn.com/oldnewthing/archive/2004/01/08/48616.aspx#599862</link><pubDate>Wed, 17 May 2006 15:44:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:599862</guid><dc:creator>Anuncie Aqui!</dc:creator><description /></item></channel></rss>