C³ÌÐòÓë»ã±à³ÌÐò»ìºÏ±à³Ì
C³ÌÐòÓë»ã±à³ÌÐòÏ໥µ÷ÓùæÔò
ΪÁËʹµ¥¶À±àÒëµÄCÓïÑÔ³ÌÐòºÍ»ã±à³ÌÐòÖ®¼äÄܹ»Ï໥µ÷Ó㬱ØÐëΪ×Ó³ÌÐò¼äµÄµ÷Óùæ
¶¨Ò»¶¨µÄ¹æÔò¡£ATPCS£¬¼´ARM£¬ Thumb¹ý³Ìµ÷Óñê×¼(ARM/Thumb Procedure Call
Standard)£¬ÊÇARM³ÌÐòºÍThumb³ÌÐòÖÐ×Ó³ÌÐòµ÷ÓõĻù±¾¹æÔò£¬Ëü¹æ¶¨ÁËһЩ×Ó³ÌÐò¼äµ÷ÓÃ
µÄ»ù±¾¹æÔò£¬Èç×Ó³ÌÐòµ÷Óùý³ÌÖеļĴæÆ÷µÄʹÓùæÔò£¬¶ÑÕ»µÄʹÓùæÔò£¬²ÎÊýµÄ´«µÝ¹æÔò
µÈ¡£
ÏÂÃæ½áºÏʵ¼Ê½éÉܼ¸ÖÖATPCS¹æÔò£¬Èç¹û¶ÁÕßÏëÁ˽â¸ü¶àµÄ¹æÔò£¬¿ÉÒԲ鿴Ïà¹ØµÄÊé
¼®¡£
1£® »ù±¾ATPCS
»ù±¾ATPCS¹æ¶¨ÁËÔÚ×Ó³ÌÐòµ÷ÓÃʱµÄһЩ»ù±¾¹æÔò£¬°üÀ¨ÏÂÃæ3·½ÃæµÄÄÚÈÝ£º
(1)¸÷¼Ä´æÆ÷µÄʹÓùæÔò¼°ÆäÏàÓ¦µÄÃû³Æ¡£
(2)Êý¾ÝÕ»µÄʹÓùæÔò¡£
(3)²ÎÊý´«µÝµÄ¹æÔò¡£
Ïà¶ÔÓÚÆäËüÀàÐ͵ÄATPCS£¬Âú×ã»ù±¾ATPCSµÄ³ÌÐòµÄÖ´ÐÐËٶȸü¿ì£¬ËùÕ¼ÓõÄÄÚ´æ¸üÉÙ¡£
µ«ÊÇËü²»ÄÜÌṩÒÔϵÄÖ§³Ö£º ARM³ÌÐòºÍThumb³ÌÐòÏ໥µ÷Ó㬠Êý¾ÝÒÔ¼°´úÂëµÄλÖÃÎÞ¹Ø
µÄÖ§³Ö£¬×Ó³ÌÐòµÄ¿ÉÖØÈëÐÔ£¬Êý¾ÝÕ»¼ì²éµÄÖ§³Ö¡£
¶øÅÉÉúµÄÆäËû¼¸ÖÖÌØ¶¨µÄATPCS¾ÍÊÇÔÚ»ù±¾ATPCSµÄ»ù´¡ÉÏÔÙÌí¼ÓÆäËûµÄ¹æÔò¶øÐγÉ
µÄ¡£ÆäÄ¿µÄ¾ÍÊÇÌṩÉÏÊöµÄ¹¦ÄÜ¡£
2£® ¼Ä´æÆ÷µÄʹÓùæÔò
¼Ä´æÆ÷µÄʹÓñØÐëÂú×ãÏÂÃæµÄ¹æÔò£º
(1) ×Ó³ÌÐò¼äͨ¹ý¼Ä´æÆ÷R0¡«R3À´´«µÝ²ÎÊý¡£Õâʱ£¬¼Ä´æÆ÷R0¡«R3¿ÉÒÔ¼Ç×÷A0¡«A3¡£
±»µ÷ÓõÄ×Ó³ÌÐòÔÚ·µ»ØÇ°ÎÞÐè»Ö¸´¼Ä´æÆ÷R0¡«R3µÄÄÚÈÝ¡£
(2) ÔÚ×Ó³ÌÐòÖУ¬Ê¹ÓüĴæÆ÷R4¡«RllÀ´±£´æ¾Ö²¿±äÁ¿¡£Õâʱ£¬¼Ä´æÆ÷R4¡«R11¿ÉÒÔ
¼Ç×÷V1¡«V8¡£Èç¹ûÔÚ×Ó³ÌÐòÖÐʹÓõ½Á˼ĴæÆ÷V1¡«V8ÖеÄijЩ¼Ä´æÆ÷£¬×Ó³ÌÐò½øÈëʱ±ØÐë
±£´æÕâЩ¼Ä´æÆ÷µÄÖµ£¬ÔÚ·µ»ØÇ°±ØÐë»Ö¸´ÕâЩ¼Ä´æÆ÷µÄÖµ£»¶ÔÓÚ×Ó³ÌÐòÖÐûÓÐÓõ½µÄ¼Ä´æÆ÷
Ôò²»±Ø½øÐÐÕâЩ²Ù×÷¡£ÔÚThumb³ÌÐòÖУ¬Í¨³£Ö»ÄÜʹÓüĴæÆ÷R4¡«R7À´±£´æ¾Ö²¿±äÁ¿¡£
(3) ¼Ä´æÆ÷R12ÓÃ×÷×Ó³ÌÐò¼äscratch¼Ä´æÆ÷£¬¼Ç×÷IP¡£ÔÚ×Ó³ÌÐò¼äµÄÁ¬½Ó´úÂë¶ÎÖÐ
³£ÓÐÕâÖÖʹÓùæÔò¡£
(4) ¼Ä´æÆ÷R13ÓÃ×÷Êý¾ÝÕ»Ö¸Õ룬¼Ç×÷SP¡£ÔÚ×Ó³ÌÐòÖмĴæÆ÷R13²»ÄÜÓÃ×÷ÆäËûÓÃ;¡£
¼Ä´æÆ÷SPÔÚ½øÈë×Ó³ÌÐòʱµÄÖµºÍÍ˳ö×Ó³ÌÐòʱµÄÖµ±ØÐëÏàµÈ¡£
(5) ¼Ä´æÆ÷R14³ÆÎªÁ¬½Ó¼Ä´æÆ÷£¬¼Ç×÷LR¡£ËüÓÃÓÚ±£´æ×Ó³ÌÐòµÄ·µ»ØµØÖ·¡£Èç¹ûÔÚ
×Ó³ÌÐòÖб£´æÁË·µ»ØµØÖ·£¬¼Ä´æÆ÷R14Ôò¿ÉÒÔÓÃ×÷ÆäËûÓÃ;¡£
(6) ¼Ä´æÆ÷R15ÊdzÌÐò¼ÆÊýÆ÷£¬¼Ç×÷PC¡£Ëü²»ÄÜÓÃ×÷ÆäËûÓÃ;¡£
3.²ÎÊý´«µÝ¹æÔò
¸ù¾Ý²ÎÊý¸öÊýÊÇ·ñ¹Ì¶¨¿ÉÒÔ½«×Ó³ÌÐò·ÖΪ²ÎÊý¸öÊý¹Ì¶¨µÄ(nonvariadic)×Ó³ÌÐòºÍ²ÎÊý
¸öÊý¿É±äµÄ(variadic)×Ó³ÌÐò¡£
Ïà¹ØÎĵµ£º
http://en.wikipedia.org/wiki/C_preprocessor
C preprocessor
from Wikipedia, the free encyclopedia
Jump to:navigation, search
The C preprocessor (cpp) is the preprocessor for the C programming language. In many C implementations, it is a separate program invoked by the compiler as the first part ......
Àý) Σ険¤Ê¥³ー¥Ç¥£¥ó¥°
1 char cStr[256];
2 ZeroMemory(cStr, sizeof(cStr));
3 &nb ......
¡¶Cר¼Ò±à³Ì¡·Ñ§Ï°×ܽá2
ת×Ô £º http://blog.chinaunix.net/u2/87570/showart_2120069.html
±àÒëÆ÷×öÁËЩʲô
ͼ1£º±àÒëÆ÷ͨ³£·Ö¸î³É¼¸¸ö¸üСµÄ³ÌÐò
¾²Ì¬Á´½ÓÓ붯̬Á´½Ó
  ......
´ÓÄ³Î»ÍøÓѵIJ©¿Í¿´µ½¹ØÓÚextern "C"Ó÷¨µÄÎÄÕ£¬½²µÃ·Ç³£Í¸³¹£¬ÓÚÊǾÍÕª³ÁËÎÒ֮ǰ²»ÉõÁ˽âµÄ²¿·Ö×ö¸öbackup¡£
Ò»¡¢´ÓCÓëC++±àÒëÁ¬½Ó·½Ê½ÉîÈëÀí½âextern "C"
<1>.CºÍC++¶Ôº¯ÊýµÄ´¦Àí·½Ê½ÊDz»Í¬µÄ.±»extern "C"ÐÞÊεıäÁ¿ºÍº¯ÊýÊǰ´ÕÕCÓïÑÔ·½Ê½±àÒëºÍÁ¬½ÓµÄ.extern "C"ÓÃÓÚʵÏÖC++ÓëC¼°ÆäËüÓïÑԵĻìºÏ±à³Ì¡ ......
CÓïÑÔ³ÌÐò¿ÉÒÔ¿´³ÉÓÉһϵÁÐÍⲿ¶ÔÏ󹹳ɣ¬ÕâЩÍⲿ¶ÔÏó¿ÉÄÜÊDZäÁ¿»òº¯Êý¡£¶øÄÚ²¿±äÁ¿ÊÇÖ¸¶¨ÒåÔÚº¯ÊýÄÚ²¿µÄº¯Êý²ÎÊý¼°±äÁ¿¡£Íⲿ±äÁ¿¶¨ÒåÔÚº¯ÊýÖ®Í⣬Òò´Ë¿ÉÒÔÔÚÐí¶àº¯ÊýÖÐʹÓá£ÓÉÓÚCÓïÑÔ²»ÔÊÐíÔÚÒ»¸öº¯ÊýÖж¨ÒåÆäËüº¯Êý£¬Òò´Ëº¯Êý±¾ÉíÖ»ÄÜÊÇ“ÍⲿµÄ”¡£
ÓÉÓÚ ......