C/C++º¯Êýµ÷ÓÃÔ¼¶¨
¹ØÓÚ C/C++ º¯Êýµ÷ÓÃÔ¼¶¨£¬´ó¶àÊýʱºò²¢²»»áÓ°Ïì³ÌÐòÂß¼£¬µ«Óöµ½¿çÓïÑÔ±à³Ìʱ£¬Á˽âһϻ¹ÊÇÓкô¦µÄ¡£
VC ÖÐĬÈϵ÷ÓÃÊÇ __cdecl ·½Ê½£¬Windows API ʹÓà __stdcall µ÷Ó÷½Ê½£¬ÔÚ DLL µ¼³öº¯ÊýÖУ¬ÎªÁ˸ú Windows API ±£³ÖÒ»Ö£¬½¨ÒéʹÓà __stdcall ·½Ê½¡£
µ÷ÓÃÔ¼¶¨¸ú¶ÑÕ»Çå³ýÃÜÇÐÏà¹Ø¡£Èç¹ûдһ¸ö»ã±àº¯Êý£¬¸ø C/C++ µ÷Óã¬ÔÚ __cdecl ·½Ê½Ï£¬Ôò»ã±àº¯ÊýÎÞÐèÇå³ý¶ÑÕ»£¬ÔÚ __stdcall ·½Ê½Ï£¬»ã±àº¯ÊýÐèÒªÔÚ·µ»Ø£¨RET£©Ö®Ç°»Ö¸´¶ÑÕ»¡£
C ÓïÑÔÓÐ __cdecl¡¢__stdcall¡¢__fastcall¡¢naked¡¢__pascal¡£
C++ ÓïÑÔÓÐ __cdecl¡¢__stdcall¡¢__fastcall¡¢naked¡¢__pascal¡¢__thiscall£¬±È C ÓïÑÔ¶à³öÒ»ÖÖ __thiscall µ÷Ó÷½Ê½¡£
ÔÚVCÖУ¬¿ÉÒÔÉèÖÃĬÈϵĵ÷ÓÃÔ¼¶¨£¬ÉèÖ÷¾¶Îª£º
Project à Properties à Configuration Properties à C/C++ à Advanced à Call Conversion¡£
ÏÂÃæÏêϸ½éÉÜÈçÉÏÁùÖÖµ÷Ó÷½Ê½£º
1¡¢__cdecl
__cdeclµ÷ÓÃÔ¼¶¨ÓÖ³ÆÎª C µ÷ÓÃÔ¼¶¨£¬ÊÇ C/C++ ÓïÑÔȱʡµÄµ÷ÓÃÔ¼¶¨¡£²ÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý±¾Éí²»ÇåÀíÕ»£¬´Ë¹¤×÷Óɵ÷ÓÃÕ߸ºÔ𣬷µ»ØÖµÔÚEAXÖС£ÓÉÓÚÓɵ÷ÓÃÕßÇåÀíÕ»£¬ËùÒÔÔÊÐí¿É±ä²ÎÊýº¯Êý´æÔÚ£¬Èçint sprintf(char* buffer,const char* format,...);¡£
2¡¢__stdcall
__stdcall ºÜ¶àʱºò±»³ÆÎª pascal µ÷ÓÃÔ¼¶¨¡£pascal ÓïÑÔÊÇÔçÆÚºÜ³£¼ûµÄÒ»ÖÖ½ÌѧÓüÆËã»ú³ÌÐòÉè¼ÆÓïÑÔ£¬ÆäÓï·¨ÑϽ÷¡£²ÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý×ÔÉíÇåÀí¶ÑÕ»£¬·µ»ØÖµÔÚEAXÖС£
3¡¢__fastcall
¹ËÃû˼Ò壬__fastcall µÄÌØµã¾ÍÊǿ죬ÒòΪËüͨ¹ý CPU ¼Ä´æÆ÷À´´«µÝ²ÎÊý¡£ËûÓà ECX ºÍ EDX ´«ËÍǰÁ½¸öË«×Ö£¨DWORD£©»ò¸üСµÄ²ÎÊý£¬Ê£ÏµIJÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý×ÔÉíÇåÀí¶ÑÕ»£¬·µ»ØÖµÔÚ EAX ÖС£
4¡¢naked
naked ÊÇÒ»¸öºÜÉÙ¼ûµÄµ÷ÓÃÔ¼¶¨£¬Ò»°ã²»½¨ÒéʹÓᣱàÒëÆ÷²»»á¸øÕâÖÖº¯ÊýÔö¼Ó³õʼ»¯ºÍÇåÀí´úÂ룬¸üÌØÊâµÄÊÇ£¬Äã²»ÄÜÓÃreturn·µ»Ø·µ»ØÖµ£¬Ö»ÄÜÓòåÈë»ã±à·µ»Ø½á¹û£¬´Ëµ÷ÓÃÔ¼¶¨±ØÐë¸ú __declspec ͬʱʹÓá£ÀýÈ綨ÒåÒ»¸öÇóºÍ³ÌÐò£¬Èç__declspec(naked) int add(int a,int b);¡£
5¡¢__pascal
ÕâÊÇ pascal ÓïÑԵĵ÷ÓÃÔ¼¶¨£¬¸ú __stdcall Ò»Ñù£¬²ÎÊý°´ÕÕ´ÓÓÒÖÁ×óµÄ·½Ê½ÈëÕ»£¬º¯Êý×ÔÉíÇåÀí¶ÑÕ»£¬·µ»ØÖµÔÚEAXÖС£VC ÖÐÒѾ·ÏÆúÁËÕâÖÖµ÷Ó÷½Ê½£¬Òò´ËÔÚд VC ³ÌÐòʱ£¬½¨ÒéʹÓà __stdcall ´úÌæ¡£
6¡¢__thiscall
ÕâÊÇ C++ ÓïÑÔÌØÓеÄÒ»ÖÖµ÷Ó÷½Ê½£¬ÓÃÓÚÀà³ÉÔ±º¯ÊýµÄµ÷ÓÃÔ¼¶¨¡£Èç¹û
Ïà¹ØÎĵµ£º
http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html
Sunday, May 10, 2009
Hadoop should target C++/LLVM, not Java (because of watts)
< type="text/javascript">
digg_url="http://www.trendcaller.com/2009/05/hadoop-should-target-cllvm-not-java.html";
Over the years, ......
ÏÂÃæµÄÎļþµÄʹÓ÷½·¨ÊÇ£º½«ÏÂÃæµÄÎļþ±£´æÔÚlinuxÄÚºËÔ´ÂëĿ¼ÖУ¬ÎļþµÄÃû³ÆÊÇ.config£¬È»ºómake menuconfig,ÔÚ³öÏÖ
µÄÅäÖýçÃæÖÐÑ¡ÔñLoad ConfiguratioÑ¡ÏȻºó¿ÉÒÔÔÚÕâ¸ö»ù´¡ÉÏÐÞ¸Ä×Ô¼ºµÄkernel¡£ÏÂÃæµÄÅäÖÃÊÇ»ùÓÚs3c2410£¬Ö§³Öyaffs2
Îļþϵͳ¡£ÎÒ¿´ÁËһϱàÒë³öÀ´µÄuImage´ó¸ÅÔÚ800k×óÓÒ£¬ºÇºÇôÕâÊDZ¾È˵ÚÒ»´Î³É ......
¹Û²ì¹ýÈ¥Ò»ÖܺãָţÐÜÖ¤µÄ×ʽðÁ÷Ïò£¬ÆÚ¼ä·Ö±ðÔ¼ÓÐ1800ÍòºÍ850ÍòÔª×ʽð淨Á÷Èëºãָţ֤ºÍÐÜÖ¤£¬ÏÔʾ´óÊÐÔÚ21000µã¹Ø¿ÚÖÁ100ÌìÏßÔ¼21500µã¸½½üÕ·ùÉÏÂäÆÚ¼ä£¬¿´ºÃºÍ¿´å£Á½·½Ãæ¶¼ÓÐÖ§³ÖÕߣ¬Î©ÆÕ±éÒÔ¶ÌÏßÂòÂôΪÖ÷¡£µ±´óÊлØÊÔ21000µã¹Ø¿Ú¸½½üʱ£¬Êг¡ÉϵÄÐÜÖ¤³Ö²Ö¼õÉÙ£¬¶øÅ£Ö¤Ôò¼û×ʽðÁ÷È룻µ±´óÊÐÉý½ü100Ì ......
externÊÇC/C++ÓïÑÔÖбíÃ÷º¯ÊýºÍÈ«¾Ö±äÁ¿×÷Ó÷¶Î§£¨¿É¼ûÐÔ£©µÄ¹Ø¼ü×ÖËü¸æËß±àÒëÆ÷£¬ÆäÉùÃ÷µÄº¯ÊýºÍ±äÁ¿¿ÉÒÔÔÚ±¾Ä£¿é»òÆäËüÄ£¿éÖÐʹÓá£
1¡£¶ÔÓÚextern±äÁ¿À´Ëµ£¬½ö½öÊÇÒ»¸ö±äÁ¿µÄÉùÃ÷£¬Æä²¢²»ÊÇÔÚ¶¨Òå·ÖÅäÄÚ´æ¿Õ¼ä¡£Èç¹û¸Ã±äÁ¿¶¨Òå¶à´Î£¬»áÓÐÁ¬½Ó´íÎó
2¡£Í¨³££¬ÔÚÄ£¿éµÄÍ·ÎļþÖжԱ¾Ä£¿éÌṩ¸øÆäËüÄ£¿éÒýÓõĺ¯ÊýºÍÈ«¾Ö±äÁ ......