¹Ø¼ü´Ê£º³ÌÐòÓÅ»¯ ´úÂëѹËõ P-CODE ±àÒëָʾÆ÷ ³ÌÐòµ÷ÊÔ
1. ǰÑÔ
Óû§ÒªÇóÓ¦ÓóÌÐòÓиü¶à¸üÈ«µÄ¹¦ÄÜ£¬Ê¹µÃÓ¦ÓóÌÐòµÄ´úÂ볤¶È³ÖÐøÔö³¤£¬µ«ÓÉÓÚϵͳµÄ¿ª·ÅÐÔ£¬ÓÐʱҲҪÇóÓ¦ÓóÌÐòÄÜÔÚ¶àÖÖ»·¾³ÏÂÔËÐУ¬ÓкܺõĿÉÒÆÖ²ÐÔ¡£ÕâÒªÏÞÖÆÓ¦ÓóÌÐòµÄ´úÂ볤¶È£¬¼õÉÙÆäÔËÐÐʱËùÕ¼µÄÄÚ´æÈÝÁ¿¡£
Microsoft¹«Ë¾ÎªÁËÂú×ã´ËÐèÇó£¬ÔÚÆäÓ¦ÓóÌÐò¿ª·¢°üÖÐÒý½øÁËÒ»ÖÖ³ÆÎªP-CODE(Packed Code, ѹËõÂë)µÄ´úÂëѹËõ¼¼Êõ¡£´Ë¼¼ÊõÓë±¾µØ»úÆ÷Î޹أ¬ÔÚ´ó¶àÊýÇé¿öÏ£¬¿É°ÑÖ´ÐгÌÐòµÄ³¤¶È¼õÉÙ´óÔ¼40£¥£¬Îª³ÌÐòÔ±ÌṩÁËÒ»¸öÁé»î¶øÓÖÈÝÒ×ʵÏֵĽâ¾ö·½°¸£¬¼õÉÙÁËÓ¦ÓóÌÐò¶ÔÄÚ´æÈÝÁ¿ÈÕÒæÔö³¤µÄÐèÇó¡£
2. P-CODE¹¤×÷ÔÀí
P-CODE µÄ»ù±¾¹¤×÷ÔÀíÊDZàÒëÆ÷ÏȰÑÖ´ÐгÌÐò±àÒëΪ±È80X86»úÆ÷Âë½ô´ÕµÃ¶àµÄÖмä´úÂëÐÎʽ£¬È»ºóÔÚÁ´½Óʱ°ÑÒ»¸öС¹¤×÷ÒýÇæÇ¶ÈëÖ´ÐгÌÐòÖУ¬×îºóÔÚÔËÐÐʱÓɴ˹¤×÷ÒýÇæ°ÑP-CODE½âÊÍΪ±¾µØ»úÆ÷Âëʵ¼ÊÖ´ÐС£ÎªÁË·½±ãʹÓã¬P-CODE¼¼ÊõʵÏÖÓÚ±àÒë¹ý³ÌµÄ´úÂëÉú³É½×¶Î¡£ÀýÈ翪·¢ÕßÔÚC/C++ÖÐÓ¦ÓÃP-CODE¼¼Êõʱ£¬Ö»Ðè°ÑËü×÷Ϊһ¸ö¡°ÓÅ»¯¡±Ñ¡ÏîÑ¡Öм´¿É
2.1. Ö¸Áî¸ñʽ
ÔÚÓ¦ÓÃP-CODE¼¼Êõʱ£¬Á´½ÓÆ÷»á×Ô¶¯¿½±´Ò»·Ý³¤¶ÈԼΪ9KµÄP-CODE¹¤×÷ÒýÇæµ½Ö´ÐгÌÐòÖУ¬³ÌÐòÔËÐÐʱËü·ÂÕæÒ»¸öÐéÄâ´¦ÀíÆ÷¡£
P-CODE¼¼ÊõÄÜѹËõÖ´ÐгÌÐò´úÂ볤¶ÈµÄ¹Ø¼ü¾ÍÔÚÓÚ¹¤×÷ÒýÇæµÄÖ¸Áî¸ñʽ¡£ÎÒÃÇÖªµÀ£¬ÔÚÏÖ´ú¼ÆËã»úµÄÖ¸Áî¸ñʽÖУ¬Ö¸Áî³ýÖ¸ÁîÂëÍ⣬»¹°üÀ¨Ö¸³öÔ´ºÍÄ¿µÄ²Ù×÷ÊýµÄµØÖ·Âë£¬ÕæÕýµÄ²Ù×÷ÊýÒ»°ã·ÅÔÚÄÚ´æºÍ¼Ä´æÆ÷ÖС£¶øÒ»°ã³£ÓõÄÖ¸Áî¸ñʽÊǶþµØÖ·Âë½á¹¹£¬ÉÙÁ¿Ê¹ÓÃÒ»µØÖ·ÂëºÍÁãµØÖ·Âë½á¹¹¡£ÀýÈç×î¼òµ¥µÄÁ½¸ö¼Ä´æÆ÷ÖµÏà¼Ó»ã±àÖ¸ÁîдΪ£ºADD AX, BX; AX¡û(AX)+(BX)
¶øP-CODEÊÇÒ»¸ö¶ÀÁ¢ÓÚ±¾µØ»úÆ÷µÄÐéÄâÖ¸Áîϵͳ£¬Æä¹¤×÷ÒýÇæÊÇÒ»¸ö»ùÓÚ¶ÑÕ»µÄÐéÄâ»ú£¬ËüµÄ´ó¶àÊýÖ¸ÁîÖÐÖ»ÓÐÖ¸ÁîÂ룬ûÓеØÖ·Â벿·Ö£¬Òþº¬²Ù×÷Êý´æ´¢ÓÚϵͳ¶ÑÕ»ÖУ¬Òò¶øÔ¶±È±¾µØ»úÆ÷Ö¸Áî½ô´Õ¡£Í¬ÑùÉÏÊöµÄ¹¤×÷£¬P-CODE¾Í¿É¼ò»¯ÎªADDW£¬ËüÖ´ÐÐʱ´Ó¶ÑÕ»Öе¯³ö²Ù×÷Êý£¬ÔËËãºóµÄ½á¹ûÔÙѹ»Ø¶ÑÕ»ÖС£ÈçÓÃ80x86»ã±àÖ¸Áî±íʾ£¬¾ÍµÈ¼ÛÓÚÏÂÁÐÖ¸Áî¶Î£º
POP AX ;µ¯³öµÚÒ»¸ö²Ù×÷Êýµ½AX¼Ä´æÆ÷ÖÐ
POP BX ;µ¯³öµÚ¶þ¸ö²Ù×÷Êýµ½BX¼Ä´æÆ÷ÖÐ
ADD AX, BX ;°ÑÁ½ÊýÏà¼Ó£¬½á¹û´æÖüÓÚAX¼Ä´æÆ÷ÖÐ
PUSH AX ; ½«AX¼Ä´æÆ÷ÖеĽá¹ûѹ»Ø¶ÑÕ»ÖÐ
2.2. ²Ù×÷Â볤¶È
P-CODEÒýÇæÊ¹ÓöÑÕ»Òþº¬Ñ°Ö·£¬Ê¹µÃÆä²Ù×÷Â볤¶Èƽ¾ùСÓÚ2¸ö×Ö½Ú£¬·ÖΪ±ê×¼ºÍÀ©Õ¹µÄ²Ù×÷ÂëÁ½´óÀà¡£
±ê×¼²Ù×÷ÂëÕ¼ÓÃÒ»¸ö×Ö½Ú£¬ÓÉ255Ìõ×î³£ÓõÄÖ¸Áî×é³É£¬À©Õ¹²Ù×÷ÂëÓÉ256Ìõ²»Ì«³£ÓõÄÖ¸Áî×é³É¡£ÓÐͳ¼Æ±íÃ÷£¬ÔÚÒ»¸öÈ«²¿±àÒëΪP-CODEµÄ20ÍòÐеÄC³ÌÐòÖУ¬Ò»×Ö½ÚÖ¸ÁîʹÓÃÆµÂÊΪ56£¥£¬Õ¼´úÂ볤¶È±ÈÀýΪ37£¥£¬¶þ×Ö½ÚÖ¸ÁîʹÓÃÆµÂÊΪ39£¥£¬Õ¼´úÂ볤¶È±ÈÀýΪ52£¥£¬¶øÈý»òËÄ×Ö½ÚÖ¸ÁîÕ¼ÓÃÁËÓàϺÜСµÄ°Ù·Ö±È¡£
2.3. ÒýÓÃ
P-CODE¼¼ÊõÓÅ»¯Ö´ÐгÌÐò³¤¶ÈµÄÁíÒ»¸öÖØÒªÌØÐÔÊÇÒýÓá£ÒýÓþÍÊDZàÒëÆ÷ÓÅ»¯Ê±£¬È¥µô´úÂë¶ÎµÄÖØ¸´ÏÖÏ󣬹²Ïí´úÂë¶ÎµÄµ¥¸öʵÀý£¬ÀàËÆÓÚÔڸ߼¶ÓïÑÔÖÐʹÓú¯Êý»ò¹ý³ÌµÄ·½·¨£¬µ±È»ËüÊDZàÒëÆ÷×Ô¶¯½øÐеġ£±àÒëÆ÷ÓÅ»¯Ê±¼ì²éËüËù²úÉúµÄ´úÂ룬ѰÕÒÖ¸Áî¶ÎÖØ¸´µÄµØ·½£¬ÔÚ³ÌÐòÖÐÖ»±£ÁôÖØ¸´¶ÎµÄÒ»´Î³öÏÖ£¬½«ËùÓÐÆäËü³öÏֵĵط½¶¼¸ÄΪָÏò±£Áô¶ÎµÄÒ»ÌõÌø×ªÖ¸Áî¡£´Ë¼¼ÊõΪִÐгÌÐò³¤¶ÈѹËõÁË´óÔ¼5£10£¥µÄ¶îÍâ¿Õ¼ä¡£
2.4. ±¾µØÈë¿Úµã
ʹÓÃP-CODE£¬ÔÚ³ÌÐò´úÂëÖÐÓÐʱҲ»á²úÉú¶îÍâµÄ¿Õ¼ä¿ªÏú£¬Õâ¾ÍÊÇP-CODEº¯ÊýÇ°ÃæµÄ±¾µØÈë¿Úµã¡£
µ±³ÌÐòÖоֲ¿Ê¹ÓÃP-CODE±àÒëʱ£¬ºÜ¿ÉÄܻᷢÉú»úÆ÷Â뺯Êýµ÷ÓÃP-CODEº¯ÊýµÄÇé¿ö¡£ÓÉÓÚP-CODEÖ¸Áî¶ÎÐèÓÉP-CODEÒýÇæ½âÊÍÖ´ÐУ¬Õâʱ¾ÍÐèÒª±àÒëÆ÷ÔÚP-CODEº¯Êý¿ªÊ¼´¦¶îÍâÔö¼Ó¼¸Ìõ»úÆ÷Ö¸Áî¼´±¾µØÈë¿Úµã£¬ÒÔ±ã»úÆ÷ת»»¿ØÖÆ£¬Í£Ö¹Ö´Ðб¾µØ»úÆ÷Âë¶øµ÷ÓÃP-CODEÒýÇæ£¬ÓÉP-CODEÒýÇæ¼ÌÐø½âÊÍÖ´ÐÐP-CODEº¯Êý¡£