Õâ¸ö¸½Â¼Ö÷ÒªÌÖÂ۸߼¶ÓïÑÔÖÐ×î³£¼ûµÄÂß¼ºÍ¿ØÖÆÁ÷½á¹¹£¬²¢½²ÊöÔÚIA-32»ã±àÓïÑÔÖеÄʵÏÖ¡£ÎÒµÄÖ÷ҪĿµÄÊǸø³öһЩÔÚÄæÏòIA-32»ã±àÓïÑÔ´úÂëʱ³£»áÓöµ½µÄһЩµäÐ͵Ļã±à´úÂëÐòÁй©´ó¼Ò²éѯ¡£
±¾¸½Â¼Ê×ÏÈÏêϸ²ûÊöÁËIA-32»ã±àÓïÑÔÖеÄÂß¼£¬ÆäÖаüÀ¨²Ù×÷ÊýÊÇÈçºÎ±È½ÏµÄ¡¢ÒÔ¼°Ìõ¼þ×ªÒÆÖ¸ÁîÊÇÔõÑùʹÓò»Í¬µÄÌõ¼þ´úÂëµÄ¡£½ÓÏÂÀ´£¬ÎÒÏêϸ½éÉÜÁ˸÷ÖÖ³£ÓõĿØÖÆÁ÷¹¹Ô죬ÆäÖаüÀ¨Ñ»·ºÍһЩ²»Í¬µÄÌõ¼þ¿é£¬²¢¾ÙÀý˵Ã÷ËüÃÇÔÚ»ã±àÓïÑÔÖÐÊÇÔõÑùʵÏÖ¡£ÆäºóµÄÔÚµÚA.3½ÚÖÐÌÖÂÛÁË·Ç·ÖÖ§Âß¼£¬²¢²ûÊöÁË×î³£¼ûµÄ·Ç·ÖÖ§Âß¼´úÂëÐòÁС£×îºó£¬ÎÒ¼òÒªµØÌÖÂÛÁ˹¤×÷¼¯µ÷Õû£¨working-set tuning£©¶ÔWindowsÓ¦ÓóÌÐòµÄÄæÏò¹ý³ÌµÄÓ°Ïì¡£
A.1 Àí½âµÍ²ãÂß¼
Èí¼þÖн«ÆÕͨµÄÐäÕ伯ËãÆ÷Óë·¢Õ¹³ÉÊìµÄ¼ÆËã»úÇø±ð¿ªÀ´µÄ×î»ù±¾ÒªËØÊÇÖ´ÐÐÂß¼Ö¸ÁîºÍÌõ¼þÖ¸Áî´úÂëÐòÁеÄÄÜÁ¦¡£ÏÂÃæÒ»½Ú½«½²ÊöÄæÏò¹¤³ÌÖÐ×î³£¼ûµÄµÍ²ãÂß¼¹¹Ô죬²¢½â
ÊÍËüÃÇÈ·ÇеÄÒâ˼¡£ÎÒÃÇÊ×ÏÈ¿´Ò»Ï»ã±àÓïÑÔÖбȽÏÁ½¸ö²Ù×÷ÊýµÄ¹ý³Ì£¬ÕâÊÇÏàµ±ÖØÒªµÄ¹¹Ôì¿é£¬¼¸ºõÔÚËùÓеÄÂß¼Óï¾äÖж¼ÒªÓõ½Ëü¡£È»ºó£¬ÎÒÃǽÓ×ÅÌÖÂÛIA-32»ã±àÓïÑÔÖеÄÌõ¼þ´úÂ룬ָÁÀïµÄÿһ¸öÌõ¼þÖ¸Áî¶¼»áÓõ½ÕâЩÌõ¼þ´úÂë¡£
A.1.1 ½Ï²Ù×÷Êý
¾ø´ó¶àÊýµÄÂß¼Óï¾ä¶¼Éæ¼°¶Ô¶þ¸ö»òÕß¶þ¸öÒÔÉϵIJÙ×÷Êý½øÐбȽϡ£Í¨³££¬±È½ÏÖ¸ÁîµÄºóÃæ»á¸ú×ÅÒ»´®Ö¸ÁËüÃÇ»á¸ù¾Ý±È½Ï½á¹ûµÄ²»Í¬¶øÖ´Ðв»Í¬µÄÖ¸Áî¡£ÏÂÃæ¼¸½Ú½«½²ÊöIA-32»ã±àÓïÑÔÖеıȽϲÙ×÷»úÖÆ¡£¶ÔÓÚÓзûºÅÊýºÍÎÞ·ûºÅÊýµÄ±È½ÏÀ´Ëµ£¬ÕâÒ»»úÖÆÂÔÓв»Í¬¡£
±È½ÏÁ½¸ö²Ù×÷ÊýµÄ»ù±¾Ö¸ÁîÊÇCMPÖ¸Áî¡£CMPÖ¸Áî±¾ÖÊÉÏÀ´Ëµ¾ÍÊÇÓõÚÒ»¸ö²Ù×÷Êý¼õÈ¥µÚ¶þ¸ö²Ù×÷Êý£¬²¢¶ªÆúÔËËã½á¹û¡£Ö»Òª¸Ä±ä´¦ÀíÆ÷µÄ±ê־룬ÕâÑù¾Í¿ÉÒÔ¸ù¾Ý±ê־λ¾ö¶¨ÏÂÃæÓ¦¸ÃÖ´ÐÐÄÄÒ»ÌõÖ¸Áî¡£ºÍÆäËûÐí¶àÖ¸ÁîÒ»Ñù£¬±ê־λµÄ±ä»¯»áËæ²Ù×÷ÊýµÄ²»Í¬£¨ÓзûºÅÊý»¹ÊÇÎÞ·ûºÅÊý£©¶ø²»Í¬¡£
Èç¹ûÄã¶ÔIA-32Öеıê־λµÄϸ½Ú»¹²»ÊÇÊ®·ÖÊìϤ£¬ÄÇôÎÒÇ¿ÁÒ½¨ÒéÄãÔÚ¼ÌÐø¶ÁÏÂȥ֮ǰÏÈ¿´Ò»Ï¸½Â¼BÖС°ËãÊõ±ê־루Arithmetic Flags£©¡±Ò»½Ú¡£
ÓзûºÅ±È½Ï
±íA.1¸ø³öÁËÓÃCMPÖ¸Áî±È½ÏÁ½¸öÓзûºÅÊýµÄÌØÐÔ£¬¼Çס£ºÕâÕűíͬÑùÊÊÓÃÓÚSUBÖ¸ÁCMPʵ¼ÊÉÏÖ´ÐеÄÊǼõ·¨²Ù×÷£©¡£
±íA.1 CMPÖ¸ÁîºÍSUBÖ¸ÁîµÄÓзûºÅÊý¼õ·¨Êä³ö±í£¨X±íʾ×ó²Ù×÷Êý£¬Y±íʾÓÒ²Ù×÷Êý£©
|
×ó²Ù×÷Êý |
ÓÒ²Ù×÷Êý |
Á½¸ö²Ù×÷ÊýµÄ¹ØÏµ |
Ó°ÏìµÄ±ê־λ |
×¢ ÊÍ |
|
X >= 0 |
Y >= 0 |
X = Y |
OF=0 SF=0 ZF=1 |
ÒòΪÁ½¸ö²Ù×÷ÊýÏàµÈ£¬ËùÒÔ½á¹ûΪ0 |
|
X > 0 |
Y >= 0 |
X > Y |
OF=0 SF=0 ZF=0 |
±ê־λ¶¼Îª0£¬±íʾ¼õ·¨½á¹ûΪÕý£¬²¢ÇÒûÓÐÒç³ö |
Ðø±í
|
×ó²Ù×÷Êý |
ÓÒ²Ù×÷Êý |
Á½¸ö²Ù×÷ÊýµÄ¹ØÏµ |
Ó°ÏìµÄ±ê־λ |
×¢ ÊÍ |
|
X < 0 |
Y < 0 |
X > Y |
OF=0 SF=0 ZF=0 |
ºÍǰһ¸öµÄÇé¿öÒ»Ñù£¬Ö»ÊÇXºÍY¶¼ÊǸºÕûÊý |
|
X > 0 |
Y > 0 |
X < Y |
OF=0 SF=1 ZF=0 |
SFΪ1±íʾ£¨X£Y£©µÄ½á¹ûΪ¸ºÊý£¬¼ÓÉÏOFΪ0£¬±íʾY´óÓÚX |
|
X < 0 |
Y >= 0 |
X < Y |
OF=0 SF=1 ZF=0 |
ºÍǰһ¸öµÄÇé¿öÊÇÒ»ÑùµÄ£¬Ö»ÊÇXÊǸºÊý¶øYÊÇÕýÊý¡£»¹ÓУ¬SF£½1ºÍOF£½0Á½Õß½áºÏÆðÀ´±íʾY´óÓÚX |
|
X < 0 |
Y > 0 |
X < Y |
OF=1 SF=0 ZF=0 |
ÕâÓÖÊÇÒ»ÖÖXÊǸºÊý¡¢YÊÇÕýÊýµÄÇé¿ö£¬µ«ÊDzúÉúÁËÒç³ö£¬²¢ÇÒ½á¹ûΪÕý |
|
X > 0 |
Y < 0 |
X > Y |
OF=1 SF=1 ZF=0 |
µ±XÊÇÕýÊý¶øYÊÇÒ»¸ö¾ø¶ÔÖµ×ã¹»´óµÄ¸ºÊý£¬½á¹û²úÉúÁËÕýÒç³ö£¬OFºÍSF¶¼±»ÖÃ1ÁË |
ͨ¹ý²é¿´±íA.1£¬ÎÒÃÇÇå³þµØÁ˽âÁËʶ±ðÓзûºÅÕûÐÍÊý±È½Ï²Ù×÷ËùµÃ½á¹ûµÄ»ù±¾¹æÔò¡£ÏÂÃæ¼òµ¥µØ×ܽáÁËÕâЩ»ù±¾µÄ¹æÔò£º
, ÈκÎʱºòÖ»Òª±ê־λZF±»ÖÃ1£¬¾Í±íÃ÷¼õ·¨ÔËËãµÄ½á¹ûΪ0£¬¼´Á½¸ö²Ù×÷ÊýÏàµÈ¡£
, Èç¹ûÕâÈý¸ö±ê־λ¶¼Îª0£¬Ôò±íÃ÷µÚÒ»¸ö²Ù×÷Êý±ÈµÚ¶þ¸ö²Ù×÷Êý´ó£¬¼õ·¨²Ù×÷µÃµ½µÄ½á¹ûΪÕý£¬²¢ÇÒûÓÐÒç³ö¡£
, µ±½á¹ûΪ¸º²¢ÇÒûÓÐÒç³ö£¨SF£½1ÇÒOF£½0£©£¬±íÃ÷µÚ¶þ¸ö²Ù×÷Êý±ÈµÚÒ»¸ö²Ù×÷Êý´ó¡£
, µ±²úÉúÒç³öÇÒ½á¹ûΪÕý£¬Ôò¿ÉÒԿ϶¨µÚ¶þ¸ö²Ù×÷Êý±ÈµÚÒ»¸ö²Ù×÷Êý´ó£¬ÒòΪʵ¼ÊÉϵõ½µÄ½á¹ûΪ¸º£¬Ö»ÊÇÕâ¸ö½á¹û̫С¶øÊ¹µÃÄ¿±ê²Ù×÷ÊýÎÞ·¨±íʾ£¨Òò´Ë²úÉúÁËÒç³ö£©¡£
, µ±²úÉúÁËÒç³ö²¢ÇÒ½á¹ûΪ¸º£¬ÔòµÚÒ»¸öÊýÒ»¶¨±ÈµÚ¶þ¸öÊý´ó£¬ÒòΪʵ¼ÊÉϵõ½µÄÊÇÒ»¸ö·Ç³£´óµÄÕýÊý½á¹û£¨Òò´ËÒ²²úÉúÁËÒç³ö£©¡£
ÊÂʵÉÏûÓбØÒª±³ËÐÕâÁ½ÕűȽÏÊä³ö±í£¨±íA.1ºÍA.2£©£¬ÄãÖ»Òª°ÑÕâÁ½Õűí¶à¿´¼¸±é£¬²¢È·±£ÕýÈ·Àí½âÁ˲Ù×÷Êý±È½Ï¹ý³ÌÊÇÔõÑùÓ°Ïì±ê־λµÄ¾Í¿ÉÒÔÁË¡£µ±´úÂëÖÐûÓа´ÕÕ³£¹æ·½·¨À´Ê¹Óñê־λµÄʱºò£¬Àí½â±ê־λÔڱȽϲÙ×÷ÊýÖеı仯¾ÍÏԵ÷dz£ÖØÒªÁË¡£ÁíÍ⣬Á˽âÔڱȽϺͼõ·¨Ö¸ÁîÖÐÊÇÔõÑùÉèÖñê־λµÄÄܹ»°ïÖúÄãÕýÈ·Àí½âÖ¸ÁîÐòÁÐÒÔ¼°¿ìËÙ½â¶ÁËüÃǵĺ¬Òå¡£
ÎÞ·ûºÅÊýµÄ±È½Ï
±íA.2¸ø³öÁËÓÃCMPÖ¸Áî¶ÔÁ½¸öÎÞ·ûºÅ²Ù×÷Êý½øÐбȽ϶Աê־λµÄÓ°Ïì¡£ºÍ±íA.1Ò»Ñù£¬ÕâÕűíÒ²ÊÊÓÃÓÚSUB£¨¼õ·¨£©Ö¸Áî¡£
±íA.2 CMPÖ¸ÁîºÍSUBÖ¸ÁîµÄÎÞ·ûºÅÊý¼õ·¨µÄÊä³ö±í£¨X±íʾ×ó²Ù×÷Êý£¬Y±íʾÓÒ²Ù×÷Êý£©
|
Á½¸ö²Ù×÷ÊýµÄ¹ØÏµ |
Ó°ÏìµÄ±ê־λ |
×¢ ÊÍ |
|
X = Y |
CF=0 ZF=1 |
Á½¸ö²Ù×÷ÊýÏàµÈ£¬Òò´Ë½á¹ûΪ0 |
|
X < Y |
CF=1 ZF=0 |
Y´óÓÚX£¬ËùÒÔ½á¹ûСÓÚ0£¬²úÉúÁËÒç³ö£¨CF£½1£© |
|
X > Y |
CF=0 ZF=0 |
X´óÓÚY£¬ËùÒÔ½á¹û´óÓÚ0£¬Ã»ÓÐÒç³ö£¨CF£½0£© |
±íA.2Çå³þµØ¸ø³öÁËÎÞ·ûºÅÕûÐÍÊý½øÐбȽÏÔËËãËùµÃ½á¹ûµÄ»ù±¾¹æÔò¡£ÏÔÈ»£¬²Ù×÷ÎÞ·ûºÅÊý¸ü¼òµ¥Ò»Ð©¡£ÏÂÃæ°ÑÕâЩ¹æÔò×ܽáһϣº
, ²»¹ÜÔÚʲôÇé¿öÏ£¬Ö»ÒªZF£½1£¬¾Í±íʾ¼õ·¨²Ù×÷µÄ½á¹ûΪ0£¬Ò²¾ÍÒâζ׎øÐбȽϵÄÁ½¸ö²Ù×÷ÊýÏàµÈ¡£
, µ±Á½¸ö±ê־λ¶¼Îª0ʱ£¬ËµÃ÷µÚÒ»¸ö²Ù×÷Êý±ÈµÚ¶þ¸ö²Ù×÷Êý´ó£¬ÒòΪ±È½ÏµÄ½á¹ûΪÕý£¬ÇÒûÓÐÒç³ö¡£
, µ±±È½ÏµÄ½á¹û²úÉúÒç³öʱ£¬¿ÉÒԿ϶¨µÚ¶þ¸ö²Ù×÷Êý±ÈµÚÒ»¸ö²Ù×÷Êý´ó£¬ÒòΪ±È½Ï½á¹ûÊÇÒ»¸ö·Ç³£Ð¡µÄÊý£¬Ê¹µÃÄ¿±ê²Ù×÷ÊýÎÞ·¨±íʾ³öÀ´¡£
A.1.2 Ìõ¼þ´úÂ루Conditional Codes£©
Ìõ¼þ´úÂëÖ¸µÄÊǸ½¼ÓÔÚijЩÌõ¼þÖ¸ÁîÖ®ºóÓÃÀ´¶¨ÒåÖ¸ÁîÖ´ÐеĴúÂë¡£
¶ÔÓÚÒ»¸öÄæÏò¹¤×÷ÕßÀ´ËµÀí½âÌõ¼þ´úÂëÊǷdz£ÖØÒªµÄ£¬ÒòΪʵ¼ÊÉÏÿ¸öÌõ¼þ´úÂëÐòÁж¼»áÉæ¼°Ò»¸ö»ò¶à¸öÌõ¼þ´úÂë¡£ÓÐʱÕâЩÌõ¼þÖ¸ÁîµÄÒâÒåÊǺÜÖ±¹ÛµÄ£¬Çë¿´ÏÂÃæµÄ´úÂ룺

ÔÚÕâ¸öÀý×ÓÖУ¬ºÜÃ÷ÏÔ£¬Èç¹ûEAX¼Ä´æÆ÷ÖеÄÊýµÈÓÚ7µÄ»°£¬JE£¨Èç¹ûÏàµÈ¾ÍÌø×ª£©Ö¸Áî¾Í»áʹָÁîÁ÷Ìø×ªµ½SomePlace¡£Õâ¸öÀý×ÓÌ«¼òµ¥ÁË£¬ÄãÉõÖÁ²»ÐèÒªÀí½âCMPÖ¸Áî¼°Ìõ¼þÂëµÄ¾ßÌåϸ½Ú¾ÍÄÜ¿´¶®Ëü¡£µ«ÊǶÔÓÚÎÒÃÇÕâÐ©ÄæÏò¹¤×÷ÕßÀ´Ëµ¾ÍºÜ²»ÐÒÁË£¬ÎÒÃÇËùÓöµ½µÄÌõ¼þ´úÂëÖÐÖ»ÓкÜÉÙÒ»²¿·ÖÓÃÕâÖÖÖ±¹ÛµÄ·½Ê½¸ø³öµÄ¡£Àí½âÌõ¼þ´úÂëÊÇÔõÑùʹÓñê־λµÄ¶ÔÓÚÕýÈ·Àí½â³ÌÐòµÄÂß¼ÊǷdz£ÖØÒªµÄ¡£ÏÂÃæ¼¸½ÚÖÐÎÒÃǽ«ÁоÙÿһÖÖÌõ¼þ´úÂ룬²¢½âÊÍËüÃÇÓõ½ÁËÄÄЩ±ê־λÒÔ¼°ÎªÊ²Ã´ÒªÓÃÕâЩ±ê־λ¡£
ÏÂÃæ¼¸½ÚÖÐÁгöµÄ¶¼Êǵ¥¶ÀµÄÌõ¼þ´úÂ룬¶øÊµ¼ÊÉÏÌõ¼þ´úÂëͨ³£ÊÇ×÷ΪÌõ¼þÖ¸Áîºó׺ʹÓõġ£Ìõ¼þ´úÂëÊDz»Äܵ¥¶ÀʹÓá£
ÓзûºÅÊýÌõ¼þ´úÂë
±íA.3ÁгöÁËIA-32ÖÐÓÃÓÚÓзûºÅ²Ù×÷ÊýµÄÌõ¼þ´úÂë¡£ÐèÒªÖ¸³öµÄÊÇ£ºËùÓеÄÓзûºÅÊýµÄÒç³ö¶¼ÊÇͨ¹ýÒç³ö±ê־λOF£¨overflow flag£©¼ì²âµÄ¡£ÕâÊÇÒòΪËãÊõÖ¸ÁîÊÇÓÃOF±ê
־λÀ´Ö¸Ê¾Òç³öµÄ¡£
±íA.3 CMPÖ¸ÁîºÍSUBÖ¸ÁîµÄÓзûºÅÊýÌõ¼þ´úÂë±í
|
Öú¼Ç·û |
±ê־λ |
Âú×ãÌõ¼þ |
×¢ ½â |
|
If Greater (G) If Not Less or Equal (NLE) |
ZF = 0 ÇÒ ((OF=0 ÇÒ SF = 0) »ò (OF = 1 AND SF = 1)) |
X>Y |
ÓÃZF±ê־λÀ´È·¶¨Á½¸ö²Ù×÷Êý²»ÏàµÈ¡£Í¬Ê±Ê¹ÓÃSF±ê־λ²âÊÔ½á¹ûÊÇÎÞÒç³öµÄÕý½á¹û»¹ÊÇÓÐÒç³öµÄ¸º½á¹û¡£Èç¹ûÊǺóÒ»ÖÖÇé¿öÔò±íÃ÷µÚ¶þ¸ö²Ù×÷ÊýÊÇÒ»¸öºÜСµÄ¸ºÕûÊý£¬Ê¹µÃ¼õ·¨µÄ½á¹ûÌ«´óµ¼ÖÂÄ¿µÄ²Ù×÷ÊýÎÞ·¨±íʾ£¨Òò´Ë²úÉúÒç³ö£© |
|
If Greater or Equal(GE) If Not Less (NL) |
(OF = 0 ÇÒ SF = 0) »ò (OF = 1 ÇÒ SF = 1) |
X>£½Y |
ÓëÇ°ÃæµÄÌõ¼þ´úÂëÀàËÆ£¬Ö»ÊÇËü²»²âÊÔZF±ê־룬ËùÒÔµ±Á½¸ö²Ù×÷ÊýÏàµÈʱҲÂú×ã¸ÃÌõ¼þ´úÂë |
|
If Less (L) If Not Greater or Equal (NGE) |
(OF = 1 ÇÒ SF = 0) »ò (OF = 1 ÇÒ SF = 1) |
X<Y |
Èç¹ûOF£½1ÇÒSF£½0£¬Ôò±íÃ÷X±ÈYС£¬¶øÇÒ½á¹û̫СÒÔÖÁÓÚÄ¿µÄ²Ù×÷ÊýÎÞ·¨±í´ï£¨ÄãµÃµ½µÄÊÇÓÐÒç³öµÄÕý½á¹û£©¡£ÁíÒ»ÖÖÇé¿öÊÇOF£½0ÇÒSF£½1£¬Í¬Ñù±íʾX±ÈYС£¬Ö»Êǽá¹ûÊÇÒ»¸öûÓÐÒç³öµÄ¸ºÊý |
Ðø±í
|
Öú¼Ç·û |
±ê־λ |
Âú×ãÌõ¼þ |
×¢ ½â |
|
If Less or Equal (LE) If Not Greater (NG) |
ZF = 1 »ò ((OF = 1 ÇÒ SF = 0) »ò (OF = 0 AND SF = 1)) |
X<£½Y |
ÓëÉÏǰһ¸öÌõ¼þ´úÂëÇé¿ö²î²»¶à£¬Ö»ÊÇ»¹Òª²âÊÔZF±ê־룬Òò´ËÈç¹ûÁ½¸ö²Ù×÷ÊýÏàµÈµÄ»°Ò²Âú×ã¸ÃÌõ¼þ´úÂë |
ÎÞ·ûºÅÊýµÄÌõ¼þ´úÂë
±íA.4¸ø³öÁËIA-32ΪÎÞ·ûºÅÊýÒâÒåµÄÌõ¼þ´úÂ롣ҪעÒ⣬ÔÚËùÓеÄÎÞ·ûºÅÊýÌõ¼þ´úÂëÖУ¬Òç³ö¶¼ÊÇÓýøÎ»±ê־λCF£¨carry flag£©£¬ÕâÊÇÒòΪÔÚËãÊõÖ¸ÁîÖÐÎÞ·ûºÅÊýµÄÔËËã½á¹ûÊÇ·ñÒç³öÊÇÓÃCF±ê־λÀ´±íʾµÄ¡£
±íA.4 ÎÞ·ûºÅÊýµÄÌõ¼þ´úÂë
|
Öú¼Ç·û |
±ê־λ |
Âú×ãÌõ¼þ |
×¢ ½â |
|
If Above (A) If Not Below or Equal (NBE) |
CF = 0 ÇÒ ZF = 0 |
X > Y |
ʹÓÃCF±ê־λÀ´È·¶¨µÚ¶þ¸ö²Ù×÷ÊýÊDz»´óÓÚµÚÒ»¸ö²Ù×÷Êý´ó£¨ÒòΪ±ÈµÚÒ»¸ö²Ù×÷Êý´óÔòZF»á±»ÖÃ1£©£¬Í¬Ê±ÓÃZF±ê־λÀ´È·ÈÏÁ½¸ö²Ù×÷ÊýÏàµÈ |
|
If Above or Equal (AE) If Not Below (NB) If Not Carry (NC) |
CF = 0 |
X >= Y |
ÓëÉÏÃæµÄÌõ¼þ´úÂëÀàËÆ£¬Ö»ÊÇÕâÀïÖ»¼ì²âCF±ê־룬Òò´Ëµ±Á½¸ö²Ù×÷ÊýÏàµÈʱҲÂú×ã¸ÃÌõ¼þ´úÂë |
|
If Below (B) If Not Above or Equal (NAE) If Carry (C) |
CF = 1 |
X < Y |
Èç¹ûCF±»ÖÃ1£¬ÎÒÃÇÖªµÀ´ËʱµÚ¶þ¸ö²Ù×÷Êý±ÈµÚÒ»¸ö´ó£¬ÒòΪÒç³ö¾Í±íʾ½á¹ûΪ¸º |
Ðø±í
|
Öú¼Ç·û |
±ê־λ |
Âú×ãÌõ¼þ |
×¢ ½â |
|
If Below or Equal (BE) If Not Above (NA) |
CF = 1 »ò ZF = 1 |
X <= Y |
ºÍÉÏÃæµÄÌõ¼þ´úÂëÒ»Ñù£¬Ö»ÊÇ»¹Òª²âÊÔZF±ê־룬Òò´ËÁ½¸ö²Ù×÷ÊýÏàµÈµÄÇé¿öÒ²Âú×ã¸ÃÌõ¼þ´úÂë |
|
If Equal (E) If Zero (Z) |
ZF = 1 |
X = Y |
ZF±»ÖÃ1£¬ÎÒÃÇÖªµÀ½á¹û¿Ï¶¨ÊÇ0£¬¼´Á½¸ö²Ù×÷ÊýÏàµÈ |
|
If Not Equal (NE) ZF=0 If Not Zero (NZ) |
ZF = 0 |
Z != Y |
Èç¹ûZF±»Çå0£¬ÎÒÃÇÖªµÀ½á¹ûΪ·ÇÁ㣬¼´Á½¸ö²Ù×÷Êý²»ÏàµÈ |
A.2 ¿ØÖÆÁ÷ºÍ³ÌÐò
¼ÆËã»ú³ÌÐòÖоø´ó¶àÊýÂß¼ÊÇÀûÓ÷ÖÖ§À´ÊµÏֵġ£·ÖÖ§ÊÇ×î³£¼ûµÄ³ÌÐò¹¹Ô죬²»¹ÜÊDz»ÊÇÓø߼¶ÓïÑÔ¡£³ÌÐò²âÊÔÒ»¸ö»ò¶à¸öÂß¼Ìõ¼þ£¬²¢¸ù¾Ý²âÊԵĽá¹û×ªÒÆµ½³ÌÐòµÄ²»Í¬²¿·ÖÈ¥Ö´ÐС£Ê¶±ð³ö·ÖÖ§²¢Æäº¬Òå¼°Ä¿µÄÊÇ×î»ù±¾µÄ´úÂë¼¶ÄæÏò¹¤³ÌÈÎÎñÖ®Ò»¡£
½ÓÏÂÀ´µÄ¼¸Ð¡½Ú½«½éÉÜ×î³£¼ûµÄ¿ØÖÆÁ÷¹¹ÔìÒÔ¼°³ÌÐò²¼¾Ö¡£ÎÒÃǽ«´ÓÒ»¸öÀý³ÌµÄÌÖÂÛ¿ªÊ¼£¬ÌÖÂÛËüÔÚ»ã±àÓïÑÔÖÐÊÇÔõÑù±íʾµÄ£¬È»ºóÌÖÂÛ×î³£¼ûµÄ¿ØÖÆÁ÷¹¹Ô죬²¢±È½Ï¸ß¼¶ÓïÑÔÖбíʾºÍµÍ¼¶ÓïÑÔÖбíʾµÄÇø±ð¡£ÕâÀïÌÖÂ۵ĿØÖÆÁ÷¹¹ÔìÓУºµ¥·ÖÖ§Ìõ¼þÓï¾ä£¬Ë«·ÖÖ§Ìõ¼þÓï¾ä£¬¶à·ÖÖ§Ìõ¼þÓï¾äÒÔ¼°Ñ»·µÈ¡£
A.2.1 ½âÃܺ¯Êý
³ÌÐòÖÐ×î»ù±¾µÄ¹¹¼Ü¿éÊÇÀý³Ì£¬»òÕß˵º¯Êý¡£´ÓÄæÏò¹¤³ÌµÄ¹ÛµãÀ´¿´£¬º¯ÊýÊǺÜÈÝÒ×±çʶµÄ£¬ÒòΪº¯Êý¶¼ÓµÓС°ÐòÑÔ£¨prologues£©¡±ºÍ¡°Î²Éù£¨epilogues£©¡±¡£±àÒëÆ÷»á¸ø¼¸ºõËù
Óеĺ¯Êý¶¼¼ÓÉϱê×¼µÄ³õʼ»¯ÐòÁС£ÕâЩ³õʼ»¯µÄ¾ßÌå´úÂëÓëÄãʹÓõıàÒëÆ÷Óйأ¬Ò²ÓëÆäËûÒòËØ±ÈÈçµ÷ÓÃÔ¼¶¨Óйء£µ÷ÓÃÔ¼¶¨½«ÔÚ¸½Â¼CÖÐÌÖÂÛ¡£
ÔÚIA-32´¦ÀíÆ÷ÖУ¬º¯Êý¼¸ºõ¶¼ÊÇʹÓÃCALLÖ¸ÁîÀ´µ÷Óõġ£CALLÖ¸Áµ±Ç°µÄÖ¸ÁîÖ¸ÕëѹÈë¶ÑÕ»£¬È»ºóÌø×ªÏò¸Ãº¯ÊýµÄµØÖ·¡£ÀûÓÃCALLÖ¸ÁÎÒÃÇ¿ÉÒÔºÜÈÝÒ׵ذѺ¯Êýµ÷ÓÃºÍÆäËûÎÞÌõ¼þÌø×ªÖ¸ÁîÇø±ð¿ªÀ´¡£
ÄÚ²¿º¯Êý
µ±±»µ÷º¯ÊýµÄʵÏÖ´úÂëÓëÖ÷µ÷º¯ÊýÔÚͬһ¸ö¶þ½øÖÆ¿ÉÖ´ÐÐÎļþÖÐʱ£¬±»µ÷º¯Êý¼´ÎªÄÚ²¿º¯Êý¡£µ±±àÒëÆ÷Ϊһ¸öÄÚ²¿º¯ÊýÉú³Éµ÷ÓôúÂëʱ£¬Í¨³£Ö±½Ó°Ñ±»µ÷º¯ÊýµÄµØÖ·Ç¶Èëµ½´úÂëÖС£Òò´Ë£¬ÎÒÃÇ¿ÉÒÔºÜÈÝÒ×µØÊ¶±ð³öÄÚ²¿º¯Êý¡£ÏÂÃæÊÇÒ»¸ö³£¼ûµÄÄÚ²¿º¯Êýµ÷ÓõÄÀý×Ó¡£
![]()
µ¼È뺯Êý
µ±Ò»¸öÄ£¿éµ÷ÓÃÁËÔÚÁíÍâÒ»¸ö¶þ½øÖÆ¿ÉÖ´ÐÐÄ£¿éÖÐʵÏֵĺ¯ÊýµÄʱºò£¬¾Í·¢ÉúÁ˵¼È뺯Êýµ÷Óᣵ¼È뺯Êýµ÷Ó÷dz£ÖØÒª£¬ÒòΪÔÚ±àÒë¹ý³ÌÖУ¬±àÒëÆ÷ÎÞ·¨È·¶¨µ½ÄÄÀïÕÒµ¼È뺯Êý£¬ËùÒÔÎÞ·¨°Ñµ¼È뺯ÊýµÄµØÖ·Ö±½ÓǶÈë´úÂëÖУ¨Ïñ´¦ÀíÄÚ²¿º¯ÊýÄÇÑù£©¡£
ͨ³££¬µ¼È뺯ÊýµÄµ÷ÓÃÊÇͨ¹ýʹÓõ¼ÈëĿ¼£¨Import Directory£©ºÍµ¼ÈëµØÖ·±í£¨Import Address Table£¬IAT£©À´ÊµÏֵģ¨Ïê¼ûµÚ3Õ£©¡£µ¼ÈëĿ¼ÊÇÔÚÔËÐÐʱʹÓõģ¬ÓÃËüÀ´½âÎöº¯ÊýÃû£¨¼´ÔÚÄ¿±ê¿ÉÖ´ÐÐÄ£¿éÖÐÆ¥Å亯Êý£©¡£IATÔòÓÃÀ´´æ·ÅÄ¿±êº¯ÊýµÄÕæÊµµØÖ·¡£Ö÷µ÷º¯Êý¿ÉÒÔ´ÓIATÖмÓÔØº¯ÊýµÄÖ¸Õë¶Ôº¯Êý½øÐе÷Óá£ÏÂÃæµÄÀý×ÓÊÇÒ»¸öµäÐ͵ĵ¼È뺯Êýµ÷Óãº
![]()
×¢ÒâÔÚÖ¸ÕëÇ°ÃæµÄ¡°DWORD PTR¡±¡ª¡ªÕâ¸öÐÞÊδʺÜÖØÒª£¬ÒòΪËü¸æËßCPU²»ÊÇÌø×ªµ½IAT_PointerµÄµØÖ·ÉÏÈ¥£¬¶øÊÇÌø×ªµ½IAT_PointerËùÖ¸ÏòµÄµØÖ·ÉÏÈ¥¡£ÁíÍ⣬»¹Òª¼ÇסµÄÊÇÕâ¸öÖ¸Õëͨ³£²»»áÓÐÃû×Ö£¨µ±È»ÕâÈ¡¾öÓÚËùÓõķ´±àÒëÆ÷£©£¬Í¨³£Ö»ÊÇÒ»¸öÖ¸ÏòIATµÄµØÖ·¡£
ʶ±ðµ¼È뺯Êýµ÷ÓñȽϼòµ¥£¬ÕâÊÇÒòΪ³ýÁËÕâÖÖÀàÐ͵ĵ÷ÓÃÍ⣬ÆäËûº¯Êý¼«ÉÙ»áʹÓÃÒ»¸öÓ²±àÂ뺯ÊýÖ¸Õë¼ä½Óµ÷Óᣵ«ÊÇ£¬ÎÒ»¹Êǽ¨Òé´ó¼ÒÔÚÄæÏòµÄÔçÆÚ¾ÍÈ·¶¨IATµÄλÖ㬲¢ÓÃËüÀ´È·ÈϺ¯ÊýÊDz»Êǵ¼ÈëµÄ¡£¶¨Î»IATÏ൱ÈÝÒ×£¬¶øÇÒ¿ÉÒÔÓø÷ÖÖ¸÷ÑùµÄ¹¤¾ßÀ´¶¨Î»
IAT£¨×ª´¢Ä£¿éµÄPEÍ·²¿²¢¸ø³öIATµÄµØÖ·£©¡£¹ØÓÚÓÃÓÚ´¢¿ÉÖ´ÐÐÄ£¿éPEÍ·²¿µÄ¹¤¾ß£¬¼ûµÚ4Õ¡£
ÁíÍ⻹ÓÐһЩ·´»ã±àÆ÷ºÍµ÷ÊÔÆ÷¿ÉÒÔ×Ô¶¯µØÖ¸³öµ¼³öº¯Êýµ÷Óã¨Í¨¹ýÔÚÄÚ²¿¼ì²âIATµØÖ·£©£¬ÕâÑùÒ»À´Äã¾ÍʡȥÁËÕÒµ¼È뺯Êýµ÷ÓõÄÂé·³ÁË¡£
A.2.2 µ¥·ÖÖ§Ìõ¼þ
ÔÚ´ó¶àÊý³ÌÐòÖУ¬Âß¼µÄ×î»ù±¾ÐÎʽÊÇÓÉÒ»¸öÌõ¼þºÍÒ»¸ö½ôËæÆäºóµÄ·ÖÖ§Ìõ¼þ×é³É¡£Ôڸ߼¶ÓïÑÔÖУ¬³ÌÐòԱдһÌõ´øÓÐÌõ¼þµÄifÓï¾äºÍÒ»¶ÎÂú×ã¸ÃÌõ¼þʱ¾Í»áÖ´ÐеÄÌõ¼þ´úÂë¿é¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£º
![]()
´ÓµÍ¼¶ÓïÑԵĽǶÈÀ´¿´£¬ÊµÏÖÕâÒ»Óï¾äÐèÒªÒ»¸öÂß¼²âÊÔÀ´ÅжÏSomeVariableµÄÖµÊDz»ÊÇ0£¬Èç¹ûSomeVariableµÄÖµ²»ÊÇ0£¬¾ÍÖ´ÐÐÒ»¸öÌõ¼þÌø×ªÌø¹ýÕâ¸öÌõ¼þ´úÂë¿é¡£Í¼A.1ÃèÊöÁËÕâÒ»´úÂëÆ¬¶Ï¶ÔÓ¦µ½»ã±àÓïÑÔÖеÄÑù×Ó¡£
ͼA.1ÖеĻã±à´úÂëʹÓÃTESTÖ¸Áî²âÊÔEAX¼Ä´æÆ÷ÖеÄÖµÊÇ·ñΪ0¡£ÕâÀïTESTÖ¸ÁîËùÖ´ÐеÄÊǽ«EAX¼Ä´æÆ÷Óë×Ô¼º½øÐа´Î»¡°AND¡±²Ù×÷£¬²¢¸ù¾ÝANDµÄ½á¹ûÉèÖñê־루ANDµÄ½á¹û±»ÉáÆúÁË£©¡£ÕâÊÇÒ»ÖÖ²âÊÔEAX¼Ä´æÆ÷ÖеÄÖµÊÇ·ñΪ0µÄ±È½Ï¸ßЧµÄ·½·¨£¬ÒòΪTESTÖ¸Áî»á¸ù¾Ý°´Î»AND²Ù×÷µÄ½á¹ûÉèÖÃÁã±ê־λZF£¨zero flag£©¡£×¢ÒâÕâÀïµÄÌõ¼þ±»È¡·´ÁË£ºÔÚÔ´´úÂëÖУ¬³ÌÐò²âÊÔµÄÊÇSomeVariableµÈÓÚ0ÊÇ·ñ³ÉÁ¢£¬µ«ÊDZàÒëÆ÷°ÑÌõ¼þÈ¡·´ÁË£¬Òò´ËÌõ¼þÖ¸ÁÔÚÕâÀïÊÇÒ»¸öÌø×ªÖ¸Á²âÊÔµÄÊÇSomeVariableΪ·ÇÁãÊÇ·ñ³ÉÁ¢¡£ÎÒÃÇÊÇ´Ó±àÒëÆ÷Éú³ÉµÄ¶þ½øÖÆ´úÂëÔÚÄÚ´æÖÐ×éÖ¯µÄ˳ÐòÓëËüÔÚÔ´´úÂëÖеÄ˳ÐòÒ»ÑùÕâ¸öÊÂÊµÍÆ¶Ï³öÀ´ÕâÒ»½áÂ۵ġ£Òò´Ë£¬Èç¹ûSomeVariableµÄֵΪ·ÇÁ㣬ÄÇô±àÒëÆ÷¾Í±ØÐëÌø¹ýÌõ¼þÓï¾ä¿é¡¢Ö±½ÓÖ´ÐÐÆäºóµÄ´úÂë¡£
½áÂÛÊÇ£ºÔÚµ¥·ÖÖ§Ìõ¼þÓï¾äÖУ¬Äã±ØÐë񻀾Ïò³öÌõ¼þÌø×ªµÄº¬Ò壬²ÅÄÜŪÇå³þÕæÕýµÄ¸ß¼¶Âß¼Òâͼ¡£

ͼA.1 µ¥·ÖÖ§Ìõ¼þ´úÂëÐòÁеĸ߼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
A.2.3 Ë«·ÖÖ§Ìõ¼þ
¸ß¼¶ÓïÑÔµÄÁíÒ»Ïî»ù±¾¹¦ÄÜÊÇÔÊÐí³ÌÐòԱʹÓÃË«·ÖÖ§Ìõ¼þÓï¾ä¡£Ôڸ߼¶ÓïÑÔÖУ¬×îµäÐ͵ľÍÊÇʹÓÃif-elseÕâ¶Ô¹Ø¼ü×Ö£¨keyword pair£©À´ÊµÏÖË«·ÖÖ§Ìõ¼þ¡£Ë«·ÖÖ§Ìõ¼þÓëµ¥·ÖÖ§Ìõ¼þµÄÇø±ðÔÚÓÚ£ºµ±ifÓï¾äÖеÄÌõ¼þ²»Âú×ãʱ£¬Ë«·ÖÖ§Ìõ¼þÓï¾äÒªÖ´ÐÐÁíÒ»¸ö´úÂë¿é£¬Ö´ÐÐÍêÖ®ºó²Å»áÈ¥Ö´ÐС°if-else¡±Óï¾äºóÃæµÄ´úÂë¡£Ö®ËùÒÔ°ÑÕâÖֽṹ³ÆÎªË«·ÖÖ§Ìõ¼þ£¬ÊÇÒòΪ³ÌÐòÁ÷±»·Ö³ÉÁËÁ½Ìõ¿ÉÄܵÄ·¾¶£ºÒ»ÌõÊÇ¡°if¡±¿é£¬ÁíÒ»ÌõÊÇ¡°else¡±¿é¡£
ÎÒÃǼòµ¥¿´Ò»Ï±àÒëÆ÷ÊÇÈçºÎ±àÒëË«·ÖÖ§Ìõ¼þÓï¾äµÄ¡£Ê×ÏÈ£¬ÔÚË«·ÖÖ§Ìõ¼þÖУ¬·ÖÖ§Ìõ¼þÖ¸ÏòµÄÊÇ¡°else¡±¿é£¬¶ø²»ÊÇÖ¸ÏòÌõ¼þÓï¾äºó±ß½Ó×ŵĴúÂë¡£Æä´Î£¬Ìõ¼þ±¾Éí¼¸ºõ×ÜÊDZ»È¡·´£¨Òò´ËÖ»ÓÐÔÚÌõ¼þ²»Âú×ãʱ²Å»áÌø×ªµ½¡°else¡±Óï¾ä¿é£©£¬¶øÖ÷Ìõ¼þ¿é£¨primary conditional block£¬¼´Ö¸if¿é£©¾Í·ÅÔÚÌõ¼þÌø×ªÖ®ºó£¨Òò´Ëµ±Ìõ¼þÂú×ãʱ¾Í»áÖ´ÐÐÕâ¶ÎÌõ¼þ´úÂ룩¡£Ìõ¼þ¿é×ÜÊÇÒÔÒ»¸öÎÞÌõ¼þÌø×ª½áÊø£¬ÕâÑù¾ÍÌø¹ýÁË¡°else¡±Óï¾ä¿é¡ª¡ªÕâÊÇÒ»¸öºÜºÃµÄʶ±ðË«·ÖÖ§Ìõ¼þÓï¾äµÄ±êÖ¾¡£¡°else¡±¿é·ÅÔÚÌõ¼þ¿éĩ⣬½ô½Ó×ÅÎÞÌõ¼þÌø×ªÖ®ºó¡£Í¼A.2չʾÁËÆÕͨµÄif-elseÓï¾äÔÚ»ã±àÓïÑÔÖеÄÑù×Ó¡£

ͼA.2 Ë«·ÖÖ§Ìõ¼þµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ¡£
×¢ÒâÎÞÌõ¼þJMPÕýºÃ¾ÍÔÚº¯Êýµ÷ÓÃÖ®ºó¡£µÚÒ»¸öÌõ¼þ¾ÍÊÇ´ÓÕâ¸öµØ·½Ìø¹ýelse¿éת¶øÖ´ÐкóÃæµÄ´úÂëµÄ¡£ÔÚ·´»ã±à³ÌÐòÖбæÈϼòµ¥µÄ¡°if-else¡±Ìõ¼þÓï¾äµÄ»ù±¾Ä£Ê½ÊÇ£ºÈ·¶¨½ô¸úÔÚÌõ¼þÓï¾ä¿éºóÃæµÄ´úÂëÊDz»ÊÇÒÔÒ»¸öÎÞÌõ¼þÌø×ªÓï¾ä½áÊø¡£
´ó¶àÊý¸ß¼¶ÓïÑÔ»¹Ö§³ÖÒ»ÖÖÂÔ΢¸´ÔÓµÄË«·ÖÖ§Ìõ¼þÓï¾ä£¬¼´Á½¸ö´úÂë¿éÒª¸÷ÓÃÒ»¸ö¶ÀÁ¢µÄÌõ¼þÓï¾ä¡£Õâͨ³£Êǽ«¡°if¡±ºÍ¡°else if¡±Á½¸ö¹Ø¼ü´Ê×éºÏʹÓÃÀ´ÊµÏֵ썡°if¡±ºÍ¡°else if¡±¸÷ÓÃÒ»¸ö¶ÀÁ¢µÄÌõ¼þÓï¾ä£©¡£ÕâÑù£¬Èç¹û²»Âú×ãµÚÒ»¸öÌõ¼þ£¬³ÌÐò¾ÍÌø×ªµ½µÚ¶þ¸öÌõ¼þÓï¾ä²¢²âÊÔÕâ¸öÌõ¼þ£¬Èç¹ûÁ½¸öÌõ¼þ¶¼²»Âú×㣬³ÌÐò¾ÍÖ±½ÓÌø¹ýÕû¸öÌõ¼þ¿é¡£Èç¹ûÂú×ãÁËÆäÖеÄÒ»¸öÌõ¼þ£¬³ÌÐò¾Í»áÖ´ÐÐÏàÓ¦µÄÌõ¼þ¿é£¬Ö´ÐÐÍêºó½Ó×ÅÖ´ÐÐÏÂÒ»¸ö³ÌÐòÓï¾ä¡£Í¼A.3¸ø³öÁËÕâÖÖ¿ØÖÆÁ÷¹¹ÔìµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ¡£
A.2.4 ¶àѡһÌõ¼þ
ÓÐʱºò£¬³ÌÐòÔ±»áдһЩºÜ³¤µÄÓжà¸öÌõ¼þµÄÓï¾ä£¬Âú×㲻ͬµÄÌõ¼þ¾Í»áÖ´Ðв»Í¬µÄ´úÂë¿é¡£¸ß¼¶ÓïÑÔÖÐʵÏÖ¶àѡһÌõ¼þÓï¾äµÄÆäÖÐÒ»¸ö·½·¨¾ÍÊÇʹÓá°switch¡±Óï¾ä¿é£¨ÎÒÃÇÉÔºóÌÖÂÛËü£©£¬µ±È»£¬Ò²¿ÉÒÔʹÓ󣹿µÄ¡°if¡±Óï¾ä¿éÀ´ÊµÏÖ¡£³ÌÐòÔ±ÓÐʱºò±ØÐëʹÓá°if¡±Óï¾ä¿éµÄÔÒòÊÇ¡°if¡±Óï¾äʹÎÒÃÇÄܹ»ÊµÏÖ¸ü¼ÓÁé»îµÄÌõ¼þÓï¾ä¡£¡°switch¡±Óï¾ä¿éʵÏÖ²»Á˸´ÔÓµÄÌõ¼þ£¬Ö»ÄÜʹÓÃÓ²±àÂëµÄ³£Á¿¡£Ïà¶ÔÓÚswitchÓï¾ä£¬Ò»Á¬´®µÄ¡°else-if¡±Óï¾äÔÊÐíÄã¶Ôÿһ¸ö¿éʹÓÃÈÎÒ⸴ÔÓµÄÌõ¼þ¡ª¡ªµÄÈ·Áé»î¶àÁË¡£

ͼA.3 ÓÐÁ½¸öÌõ¼þÓï¾äµÄË«·ÖÖ§Ìõ¼þµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ¡£
ʶ±ð¶àѡһÌõ¼þ¿éµÄ»ù±¾·½·¨ÓëÉÏÒ»½ÚÖÐʶ±ðÆÕͨµÄË«·ÖÖ§Ìõ¼þ¿éµÄ·½·¨·Ç³£ÏàËÆ£¬Çø±ð¾ÍÔÚÓÚÊDZàÒëÆ÷Ìí¼ÓÁ˶îÍâµÄ¡°¿ÉÑ¡¿é¡±£¬¿ÉÑ¡¿éÓÉÒ»¸ö»ò¶à¸öÂß¼²âÊÔ¡¢ÕæÕýµÄÌõ¼þ´úÂë¿é¡¢ÒÔ¼°¿ÉÒÔÌø×ªµ½Õû¸ö¶àѡһÌõ¼þ¿é½áÊø´¦µÄJMPÖ¸Áî×é³É¡£µ±È»Ö»ÓÐÔÚÌõ¼þÂú×ãµÄÇé¿öϲŻáÖ´ÐÐJMPÖ¸Áî¡£¡°switch¡±¿é¼¸ÖÖÌõ¼þ¿ÉÒÔ¹²ÓÃͬһ´úÂë¿é¡£Óë¡°switch¡±¿é²»Í¬£¬¡°else-if¡±¿éÖÐÿ¸öÌõ¼þ¶ÔÓ¦Ò»¸ö´úÂë¿é¡£Í¼A.4չʾÁËÒ»¸öËÄÌõ·ÖÖ§Ìõ¼þ´úÂëÐòÁУ¬ÆäÖаüÀ¨Ò»¸ö¡°if¡±Ìõ¼þ¿éºÍÈý¸ö±¸Ñ¡µÄ¡°else-if¡±Â·¾¶¡£
A.2.5 ¸´ºÏÌõ¼þ
ÔÚʵ¼ÊµÄ³ÌÐòÖУ¬³ÌÐòÔ±¾³£»áÔÚÒ»¸öÌõ¼þÅжÏÓï¾äÖÐʹÓöà¸öÌõ¼þ¡£ÔÚ¾ö¶¨ÊÇ·ñÖ´ÐÐij¸öÌõ¼þ´úÂë¿é֮ǰҪ²âÊÔÁ½¸ö»òÕ߸ü¶àµÄÌõ¼þ£¬ÕâÖÖÇé¿öÊǷdz£³£¼ûµÄ¡£¶ÔÓÚÄæÏòÕßÀ´Ëµ£¬ÕâÑùµÄ´úÂë½â¶ÁÆðÀ´ÄѶȾͱȽϴóÁË£¬ÒòΪΪÂß¼²âÊÔ×éºÏ£¨combination of logical checks£©Éú³ÉµÄµÍ¼¶ÓïÑÔ´úÂëͨ³£¶¼±È½ÏÄѽâ¶Á¡£ÏÂÃæ¼¸½ÚÖÐÎÒÃǽ«½éÉܼ¸ÖÖµäÐ͵ĸ´ºÏÌõ¼þÒÔ¼°ÔõÑù½â¶ÁËüÃÇ¡£ÎÒÃÇÏÈÌÖÂÛ¹¹½¨¸´ºÏÌõ¼þµÄ¼¸¸ö×î³£¼ûµÄÂß¼ÔËËã·û£¬È»ºóÔٴӵͼ¶ÓïÑԺ͸߼¶ÓïÑԵĽǶȽ²½â¼¸ÖÖ²»Í¬µÄ¸´ºÏÌõ¼þ¿é¡£

ͼA.4 ¶àѡһִÐз¾¶Ìõ¼þ´úÂëµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
Âß¼ÔËËã·û
¸ß¼¶ÓïÑÔÖÐÓÐרÃŵIJÙ×÷·û£¬ÕâÖÖ²Ù×÷·ûÔÊÐí³ÌÐòÔ±ÔÚµ¥¸öÌõ¼þÓï¾äÖÐʹÓø´ºÏÌõ¼þ¡£µ±ÒªÅжÏÌõ¼þ²»Ö¹Ò»¸öʱ£¬´úÂë±ØÐëÖ¸Ã÷¶à¸öÌõ¼þÊÇÔõÑù×éºÏÔÚÒ»ÆðµÄ¡£
×éºÏ¶à¸öÂß¼Óï¾ä×î³£ÓõIJÙ×÷·ûÊÇAND£¨Ó룩ºÍOR£¨»ò£©²Ù×÷·û£¨Äã¿É²»Òª°Ñ°´Î»Âß¼²Ù×÷·û»ì×÷һ̸£©¡£
¹ËÃû˼Ò壬AND£¨ÔÚCºÍC£«£«ÖмÇΪ¡°&&¡±£©¾ÍÊÇÁ½¸öÌõ¼þ¶¼±ØÐëÂú×ãÕû¸öÌõ¼þ²Å
»á±»ÈÏΪÊÇ¡°Õ桱¡£ÔÚ»ã±àÓïÑÔÖÐʶ±ðÕâÑùµÄ´úÂëͨ³£±È½ÏÈÝÒ×£¬ÒòΪÄã»á¿´µ½Á½¸öÁ¬ÐøµÄÌõ¼þ¶¼¸ù¾ÝÌõ¼þÌø×ªµ½Í¬Ò»¸öµØ·½¡£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£º

ÔÚÕâ¸ö´úÂëÆ¬¶ÏÖУ¬Á½¸öÌõ¼þÌø×ª¶¼Ö¸Ïòͬһ¸ö´úÂëµØÖ·£¨AfterCondition£©£¬ÕâÒ»ÊÂʵ½ÒʾÁËÕâÊÇÒ»¸ö×éºÏÂß¼Ìõ¼þ¡£Õâ¶Î´úÂëµÄ˼·ºÜ¼òµ¥£ºÊ×ÏȲâÊÔµÚÒ»¸öÌõ¼þ£¬Èç¹û²»Âú×ã¾ÍÖ±½ÓÌø×ªµ½AfterConditionµÄµØÖ·£»Èç¹ûÂú×ãµÚÒ»¸öÌõ¼þ£¬²Å»á²âÊÔµÚ¶þ¸öÌõ¼þ£¬Èç¹û²»Âú×ãÔò»¹ÊÇÌø×ªµ½AfterConditionµÄµØÖ·¡£Ìõ¼þ´úÂë¿é¾Í·ÅÔÚµÚ¶þ¸öÌõ¼þ·ÖÖ§Ö®ºó£¨Òò´ËÈç¹ûÔÚÁ½¸öÌø×ª¶¼Ã»ÓÐÖ´ÐеÄʱºò¾Í¿ÉÒÔÁ¢¼´Ö´ÐÐÌõ¼þ´úÂë¿é£©¡£½â¶ÁÕæÕýµÄ¸´ºÏÌõ¼þºÍǰ±ß½²µÄµ¥·ÖÖ§Ìõ¼þµÄ˼·ÊÇÒ»ÑùµÄ£¬ËüÃǵIJâÊÔÌõ¼þÒ²±»È¡·´ÁË¡£ÔÚÕâ¸öÀý×ÓÀ²âÊÔVariable1µÄÖµ¡°²»µÈÓÚ100¡±¾ÍÊÇÔʼ´úÂëÖвâÊÔVariable1µÄÖµÊÇ·ñ¡°µÈÓÚ100¡±¡£»ùÓÚÕâЩÐÅÏ¢£¬Äã¾Í¿ÉÒÔÖØ¹¹³öÕâ¸ö´úÂëÆ¬¶ÏµÄÔ´´úÂëÁË£º
![]()
ͼA.5չʾÁËÉÏÃæµÄ¸ß¼¶ÓïÑÔ´úÂ루High-Level Code£©ÓëÇ°ÃæµÄ»ã±àÓïÑÔ´úÂ루Assembly Language Code£©µÄÓ³Éä¹ØÏµ¡£

ͼA.5 ÓÃAND²Ù×÷·û×éºÏÁ½¸öÌõ¼þµÄ¸´ºÏÌõ¼þÓï¾äµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
ÁíÒ»¸ö³£ÓõÄÂß¼²Ù×÷·ûÊÇOR²Ù×÷·û£¬OR²Ù×÷·ûµÄº¬ÒåÊÇÖ»ÒªÆäÖеÄÒ»¸öÌõ¼þÂú×ãÕû¸ö¸´ºÏÌõ¼þ¾Í³ÉÁ¢¡£OR²Ù×÷·ûµÄÒâ˼ÊÇÈç¹ûµÚÒ»¸öÌõ¼þÂú×ã»òÊǵڶþ¸öÌõ¼þÂú×ãÕû¸ö¸´ºÏÌõ¼þÓï¾ä¾ÍÂú×ã¡£ÔÚCºÍC++ÓïÑÔÖÐOR²Ù×÷·ûÊÇÓá°||¡±·ûºÅÀ´±íʾµÄ¡£ÔÚÄæÏò¹ý³ÌÖУ¬Åжϰüº¬OR²Ù×÷·ûµÄÌõ¼þÓï¾äÒª±ÈÅжÏAND²Ù×÷·ûµÄÌõ¼þ´úÂëÂÔ΢¸´ÔÓһЩ¡£ÊµÏÖOR²Ù×÷·ûµÄÖ±½Ó·½·¨ÊǶÔÿ¸öÌõ¼þ£¨ÕâÀï²»¶ÔÌõ¼þÈ¡·´£©Ê¹ÓÃÒ»¸öÌõ¼þÌø×ª£¬²¢¼ÓÒ»¸öÌø¹ýÕû¸öÌõ¼þ´úÂë¿é£¨ÔÚÁ½¸öÌõ¼þ¶¼²»Âú×ãµÄÇé¿öÏ£©µÄÌø×ªÖ¸Áî¡£ÏÂÃæÊÇÕâÖÖ¸´ºÏÌõ¼þµÄÀý×Ó£º

ͼA.6չʾÁËÇ°ÃæµÄ´úÂëÆ¬¶ÏÓëÔÀ´µÄÔ´´úÂëÖ®¼äµÄÓ³Éä¹ØÏµ¡£

ͼA.6 ÓÃOR²Ù×÷·û×éºÏÁ½¸öÌõ¼þµÄ¸´ºÏÌõ¼þÓï¾äµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
¸úÇ°ÃæÒ»Ñù£¬Õâ¶Î´úÂëÖÐ×îÖµµÃ×¢ÒâµÄÊÇÌõ¼þÌø×ªÖ¸Áî¶¼Ö¸ÏòÏàͬµÄ´úÂë¡£ÄãÒª¼ÇסµÄÊÇ£¬OR¸´ºÏÂß¼µÄÌõ¼þÌø×ªÊµ¼ÊÖ¸ÏòµÄÊÇÌõ¼þ´úÂë¿é£¨ÓëÎÒÃÇÇ°ÃæÌÖÂÛµÄAND¸´ºÏÂ߼ǡǡÏà·´£¬AND¸´ºÏÂß¼µÄÌõ¼þÌø×ªÖ¸ÏòµÄÊÇÌõ¼þ´úÂë¿éÖ®ºóµÄ´úÂ룩¡£GCCºÍÆäËû¼¸¸ö±àÒëÆ÷¶¼²ÉÓÃÕâÖÖ·½·¨£¬ÕâÖÖ·½·¨µÄºÃ´¦ÔÚÓÚ£¨ÖÁÉÙ´ÓÄæÏò¹¤³ÌµÄ½Ç¶ÈÀ´¿´£©Ï൱Ò×¶ÁºÍÖ±¹Û¡£µ«ËüµÄÔËÐÐÐÔÄÜÒª²îһЩ£¬ÒòΪֻÓÐËùÓÐÌõ¼þ¶¼²»Âú×ã²Å»áÖ´Ðе½×îºóÄÇÌõJMPÖ¸Áî¡£
ÆäËûһЩ´øÓÐÓÅ»¯¹¦ÄܵıàÒëÆ÷£¬ÈçMicrosoftµÄ±àÒëÆ÷²ÉÓÃÁËÒ»ÖÖÂÔÓв»Í¬µÄ·½·¨À´ÊµÏÖOR²Ù×÷·û£¬´Ó¶ø±ÜÃâÁËÕâ¸ö¶îÍâµÄJMPÖ¸ÁîµÄÎÊÌâ¡£MicrosoftµÄ˼·ÊÇ£ºÖ»½«µÚ¶þ¸ö²âÊÔÌõ¼þÈ¡·´£¬²¢ÈÃËüÖ¸ÏòÌõ¼þ´úÂë¿éÖ®ºóµÄ´úÂ룬¶øµÚÒ»¸ö²âÊÔÌõ¼þÈÔȻָÏòÌõ¼þ´úÂë¿é±¾Éí¡£Í¼A.7ͼ½âÁËÔÚʹÓÃÕâÖÖ·½·¨½øÐбàÒëµÄÇé¿öÏ£¬Í¬Ò»¸öÂß¼»á±ä³ÉʲôÑù×Ó¡£
µÚÒ»¸öÌõ¼þ²âÊÔÁËVariable1ÊÇ·ñ¡°µÈÓÚ100¡±£¬ÕâºÍËüÔÚÔ´´úÂëÖеIJâÊÔÌõ¼þÊÇÒ»ÑùµÄ¡£µÚ¶þ¸öÌõ¼þ²âÊÔÁËVariable2ÊÇ·ñ¡°²»µÈÓÚ50¡±¡£ÕâÑù×öÊÇÒòΪÎÒÃÇÏ£ÍûµÚÒ»¸öÌõ¼þÂú×ãʱ¾ÍÖ´ÐÐÌõ¼þ´úÂ룬µÚ¶þ¸öÌõ¼þ£¨±»È¡·´ÁË£©Âú×ãʱ²»Ö´ÐÐÌø×ª¡£ÔÚµÚ¶þ¸öÌõ¼þ²»Âú×ãʱ£¬³ÌÐò¾ÍÌø¹ýÌõ¼þ´úÂë¿é¡£
|
ͼA.7 ²ÉÓøü¸ßЧµÄOR²Ù×÷·û°æ±¾À´×éºÏÁ½¸öÌõ¼þµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
¼òµ¥µÄÌõ¼þ×éºÏ
Èç¹ûÅöµ½ÓÃÂß¼²Ù×÷·û×éºÏÁ½¸öÒÔÉϲâÊÔÌõ¼þµÄÇé¿öÏ»áÊÇÔõÑùµÄÄØ£¿Í¨³££¬ÕâÖÖÇé¿öÖ»ÊÇÔÚ´¦ÀíÖ»ÓÐÁ½¸öÌõ¼þµÄÇé¿öÏÂËùʹÓòßÂÔµÄÀ©Õ¹¡£¶ÔÓÚGCC±àÒëÆ÷À´Ëµ£¬Ö»ÊÇÔÚÄǾäÎÞÌõ¼þÌø×ªÖ¸Áî֮ǰÔÙ¼ÓÒ»¸öÌõ¼þ²âÊÔ°ÕÁË¡£
ÔÚͼA.8ÖÐËùʾµÄ´úÂëÆ¬¶ÏÖУ¬Variable1¡¢Variable2Óëǰ±ßÀý×ÓÖÐÏàͬµÄÊýÖµ½øÐÐÁ˱Ƚϣ¬Ö»ÊÇÕâÀïÎÒÃÇ»¹ÒªÈÃVariable3ºÍ0½øÐбȽϡ£Ö»ÒªËùÓеIJâÊÔÌõ¼þ¶¼ÊÇÓÃOR²Ù×÷·ûÁ¬½ÓµÄ£¬±àÒëÆ÷¾Í»á¼òµ¥µØÔÙ¼ÓÒ»ÌõÖ¸ÏòÌõ¼þ¿éµÄÌõ¼þÌø×ª¡£Óëǰ±ßµÄÇé¿öÒ»Ñù£¬±àÒëÆ÷×ÜÊÇÔÚ½ô½Ó×Å×îºóµÄÌõ¼þ·ÖÖ§Ö¸ÁîÖ®ºó·ÅÖÃÒ»ÌõÎÞÌõ¼þÌø×ªÖ¸Áî¡£ÕâÌõÎÞÌõ¼þÌø×ªÖ¸Áî»áÔÚËùÓÐÌõ¼þ¶¼²»Âú×ãµÄÇé¿öÏÂÌø¹ýÌõ¼þ¿é¡¢Ö±½Óµ½´ïÌõ¼þ¿éÖ®ºóµÄ´úÂëµÄ¡£
¶ÔÓÚһЩ±àÒëÓÅ»¯¼¼ÊõÀ´Ëµ£¨¶ÔMicrosoftµÈ±àÒëÆ÷¶øÑÔ£©£¬·½·¨ÊÇÒ»ÑùµÄ£¬Ö»ÊDz»Ê¹ÓÃÎÞÌõ¼þÌø×ª£¬Ö»½«×îºóÒ»¸ö²âÊÔÌõ¼þÈ¡·´¡£ÆäÓàµÄ²âÊÔÌõ¼þ¶¼Ö±½ÓÒÔÖ¸ÏòÌõ¼þ´úÂë¿éµÄÖ±½ÓÌõ¼þÌø×ªÀ´ÊµÏÖ¡£Í¼A.9¸ø³öÁ˲ÉÓõڶþÖÖ¼¼ÊõÀ´±àÒëͼA.8ÖеĴúÂëµÄ½á¹û¡£

ͼA.8 ²ÉÓÃOR²Ù×÷·û×éºÏÈý¸öÌõ¼þµÄ¸´ºÏÌõ¼þÓï¾äµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ

ͼA.9 ²ÉÓøü¸ßЧµÄOR²Ù×÷·û°æ±¾×éºÏÈý¸öÌõ¼þµÄÌõ¼þÓï¾äµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
Æä˼·ºÜ¼òµ¥¡£µ±Í¬Ê±Ê¹Óöà¸öOR²Ù×÷·ûʱ£¬±àÒëÆ÷»á²úÉú¶à¸öÁ¬ÐøµÄÌõ¼þÌø×ª£¬Ã¿¸öÌõ¼þÌø×ªÔÚÌõ¼þÂú×ãµÄÇé¿ö϶¼ÌøÏòÌõ¼þ´úÂë¿é¡£×îºóÒ»¸öÌõ¼þ±»È¡·´ÁË£¬Èç¹ûÕâ¸öÌõ¼þÂú×ãµÄ»°¾ÍÌø×ªµ½Ìõ¼þ´úÂë¿éÖ®ºóµÄ´úÂëÖ´ÐУ¬Òò´Ë£¬Èç¹ûÔÌõ¼þ£¨Î´±»È¡·´µÄÌõ¼þ£©Âú×ãµÄ»°£¬¾Í²»»áÖ´ÐÐÌø×ª£¬¶øÊÇÖ´ÐÐ×îºóÒ»¸öÌõ¼þÌø×ªºóÃæ½ô½Ó×ŵÄÌõ¼þ´úÂë¿é¡£ÔÚÇ°ÃæµÄ·¶ÀýÖУ¬×îºóÒ»¸ö¼ìÑé²âÊÔµÄÊÇ¡°Variable3²»µÈÓÚ0¡±ÊÇ·ñ³ÉÁ¢£¬ËùÒÔÕâÀïʹÓÃÁËJEÖ¸Áî¡£
ÏÂÃæÎÒÃÇÀ´¿´¿´ÓÃAND²Ù×÷·û×éºÏ¶àÓÚÁ½¸öµÄ²âÊÔÌõ¼þµÄÇé¿öÏ»áÔõÑù£¨¼ûͼA.10£©¡£ÔÚÕâÖÖÇé¿öÏ£¬±àÒëÆ÷Ö»ÊÇÔö¼ÓÁ˸ü¶àµÄÈ¡·´Á˵IJâÊÔÌõ¼þ£¬µ±ËüÃÇÂú×ãµÄʱºò¾ÍÌø¹ýÌõ¼þ´úÂë¿é£¨¼Çס²âÊÔÌõ¼þ±»È¡·´ÁË£©£¬Èç¹û²»Âú×ã¾Í¼ÌÐø²âÊÔÏÂÒ»¸öÌõ¼þ£¨»òÕßÈç¹ûÊÇ×îºóÒ»¸ö²âÊÔÌõ¼þµÄ»°¾ÍתÏòÌõ¼þ´úÂë¿é±¾ÉíÖ´ÐУ©¡£
¸´ÔÓµÄÌõ¼þ×éºÏ
¸ß¼¶³ÌÐòÉè¼ÆÓïÑÔÔÊÐí³ÌÐòԱʹÓöà¸öÂß¼²Ù×÷·û×éºÏÈÎÒâ¶à¸ö²âÊÔÌõ¼þ¡£Õâ¾ÍÊÇ˵³ÌÐòÔ±¿ÉÒÔ´´½¨È«ÊÇÓÃÂß¼²Ù×÷·û×éºÏµÄ¸´ÔÓÌõ¼þÓï¾ä×éºÏ¡£

ͼA.10 ²ÉÓÃAND²Ù×÷·û×éºÏµÄÈý¸öÌõ¼þµÄ¸´ºÏÌõ¼þÓï¾äµÄ¸ß¼¶ÓïÑÔ/µÍ¼¶ÓïÑÔÊÓͼ
³ÌÐòÔ±¿ÉÒÔʹÓõIJâÊÔÌõ¼þ×éºÏÊý²»Ê¤Êý£¬ÎÒÃDz»¿ÉÄܰÑÿһ¸ö¶¼½²Ò»±é¡£Ïà·´£¬ÎÒÃǼòµ¥¿´Ò»¸ö×éºÏµÄÀý×Ó£¬²¢ÊÔ×ÅÕÒ³öÕýÈ·½â¶ÁÕâÀàÓï¾äµÄ×ܵÄÔÔò¡£

Õâ¸öÀý×ÓÓëÇ°ÃæÊ¹ÓÃORÂß¼²Ù×÷·û£¨ÓÅ»¯ºóµÄ£©µÄ´úÂëÍêÈ«Ïàͬ£¬Ö»ÊÇÔö¼ÓÁËÒ»¸ö²âÊÔVariable3ÊÇ·ñµÈÓÚ0µÄÌõ¼þ¡£Èç¹ûVariable3µÈÓÚ0£¬Ôò²»Ö´ÐÐÌõ¼þ´úÂë¿é¡£ÏÂÃæÊÇÕâ¶Î»ã±àÓïÑÔ´úÂëÔڸ߼¶ÓïÑÔÖеıíʾ¡£
![]()
Ҫȷ¶¨³öÔĶÁ»ã±àÓïÑÔ±íʾµÄ¸´ÔÓÌõ¼þ×éºÏµÄͨÓ÷½·¨²¢·ÇÒ»¼þÈÝÒ×µÄÊÂÇ飬µ«ÊÇ£¬ÔĶÁ¹ý³ÌÖÐÎÒÃÇÒªÕÒµÄ×î»ù±¾µÄÒªËØÊÇÿ¸öÌõ¼þ·ÖÖ§ÌøÏòµÄÄ¿±êµØÖ·¡£Ê¹ÓÃOR²Ù×÷·ûµÄ¸´ºÏÌõ¼þͨ³£»áÖ±½ÓÌø×ªµ½Ìõ¼þ´úÂë¿é£¬²¢ÇÒ²»ÐèÒª¶Ô²âÊÔÌõ¼þÈ¡·´£¨³ýÁË×îºóÒ»¸ö²âÊÔÌõ¼þ£¬ËüÖ¸ÏòµÄÊÇÌõ¼þ´úÂë¿éºóÃæµÄ´úÂ룬Òò´ËҪȡ·´£©¡£±È½ÏÀ´¿´£¬Ê¹ÓÃAND²Ù×÷·ûµÄ¸´ºÏÌõ¼þÖУ¬²âÊÔÌõ¼þ»á±»È¡·´£¬²¢ÇÒÔÚ²âÊÔÌõ¼þ³ÉÁ¢µÄÇé¿ö϶¼Ìø×ªµ½Ìõ¼þ´úÂë¿éºóÃæµÄ´úÂë¿éÖ´ÐС£ÔÚ·ÖÎö¸´Ôӵĸ´ºÏÌõ¼þÓï¾äʱ£¬Äã±ØÐëʹÓÃÕâЩ»ù±¾µÄ¹æÔòÀ´ÊÔ׎â¶Áÿ¸ö²âÊÔÌõ¼þ£¬²¢Àí½âËüÃÇÖ®¼äÊÇÔõÑùÁ¬½ÓµÄ¡£
A.2.6 n-··ÖÖ§Ìõ¼þ£¨Switch¿é£©
Switch¿é£¨»òÕß³ÆÎªn-··ÖÖ§Ìõ¼þ¿é£©³£³£ÓÃÓÚͬһ¸ö²Ù×÷ÊýÈ¡µÃ²»Í¬ÖµµÄʱºòÐèÒª²ÉÓò»Í¬µÄ²Ù×÷µÄÇé¿ö¡£SwitchÓï¾ä¿éʵÖÊÉÏÊÇÈóÌÐòÔ±´´½¨ÓйØËùÓпÉÄܵÄȡֵÒÔ¼°ÏàÓ¦µÄÏìÓ¦´úÂëµÄ±í¡£ÐèҪעÒâµÄÊÇ£¬Ò»¶ÎÏìÓ¦´úÂë¿ÉÒÔ¶ÔÓ¦¶à¸öȡֵ¡£
±àÒëÆ÷Óм¸ÖÖ´¦ÀíSwitchÓï¾äµÄ·½·¨£¬¾ßÌåʹÓÃÄÄÒ»ÖÖ·½·¨È¡¾öÓÚSwitch¿éµÄ´óСÒÔ¼°½ÓÊÕȡֵµÄ·¶Î§¡£ÏÂÃæ¼¸½ÚÖÐÎÒÃǽ«½éÉÜÁ½ÖÖ×î³£¼ûµÄn-··ÖÖ§µÄʵÏÖ£º±íʵÏÖºÍÊ÷ʵÏÖ¡£
±íʵÏÖ
¶Ô´óÐÍSwitch¿éÀ´Ëµ×î¸ßЧµÄʵÏÖ·½·¨£¨´ÓÔËÐÐʱµÄ¹ÛµãÀ´¿´£©ÊÇÉú³ÉÖ¸Õë±í¡£±íʵÏÖµÄ˼·ÊÇ£º±àÒëSwitchÓï¾äÖеÄÿ¸ö´úÂë¿é£¬²¢°ÑÖ¸Ïòÿһ¸ö´úÂë¿éµÄÖ¸Õë¼Ç¼µ½Ö¸Õë±íÖС£Ö®ºó£¬ÔÚSwitch¿éÖ´ÐеÄʱºò£¬Switch¿éËù²Ù×÷µÄ²Ù×÷Êý¾Í±»ÓÃ×÷Ö¸Õë±íµÄË÷Òý£¬´¦ÀíÆ÷¾Í¸ù¾Ý²Ù×÷ÊýµÄÈ¡ÖµÌøµ½ÕýÈ·µÄ´úÂë¿é¡£Òª×¢ÒâµÄÊÇ£¬Õâ¸ö¹ý³Ì²¢²»ÊǺ¯Êýµ÷Ó㬶øÊÇÒ»¸ö¾¹ýÖ¸Õë±íµÄÎÞÌõ¼þÌø×ª¡£
Ö¸Õë±íͨ³£·ÅÔÚ°üº¬¸ÃSwitch¿éµÄº¯ÊýÖ®ºó£¬µ«²¢·Ç×ÜÊÇÈç´Ë¡ª¡ªÕâÈ¡¾öÓÚËù²ÉÓõıàÒëÆ÷¡£µ±ÓÐÒ»¸öº¯Êý±í·ÅÔÚ´úÂëÇø£¨code section£©µÄÖмäʱ£¬Äã»ù±¾¿ÉÒÔÈ·ÐÅÕâ¾ÍÊÇÒ»ÕÅSwitch¿éµÄÖ¸Õë±í¡£Êµ¼ÊÉÏ£¬´úÂëÇøÄÚµÄÓ²±àÂëÖ¸Õë±í²¢²»³£¼û¡£
ͼA.11ÑÝʾÁËÔõÑùÓÃÖ¸Õë±íʵÏÖn-··ÖÖ§Ìõ¼þ¡£Ô´´úÂëÖеÚÒ»¸öcase³£Á¿ÊÇ1£¨Ò»¸öcase³£Á¿¶ÔÓ¦Ò»ÖÖÇé¿ö£©£¬×îºóÒ»¸öcase³£Á¿ÊÇ5£¬ËùÒÔÖ¸Õë±íÖÐÓ¦¸ÃÖ§³Ö5¸ö²»Í¬µÄcase¿é¡£ÆäÖÐdefault¿é²¢Ã»ÓÐ×÷ΪָÕë±íµÄÒ»²¿·ÖʵÏÖ£¬ÒòΪdefault¿éûÓоßÌåµÄ´¥·¢Öµ¡ª¡ªÈκÎÒ»¸ö²»ÔÚ1µ½5Ö®¼äµÄȡֵ¶¼»áµ¼Ö³ÌÐòÌø×ªµ½default¿éÖ´ÐС£ÎªÁËʵÏÖ¸ßЧµÄÖ¸Õë
±í²éÕÒ£¬±àÒëÆ÷°ÑByteValueµÄÖµ¼õÈ¥1ºóÔÙÓë4½øÐбȽϡ£Èç¹ûByteValueµÄÖµ´óÓÚ4£¬±àÒëÆ÷½«ÎÞÌõ¼þµÄÌø×ªµ½default¿éÖ´ÐС£·ñÔò£¬±àÒëÆ÷Ö±½ÓÖ´ÐÐÏàÓ¦µÄÌø×ªµ½¾ßÌåµÄÌõ¼þ¿éµÄÎÞÌõ¼þJMPÖ¸Áî¡£ÕâÌõJMPÖ¸ÁîÊÇ»ùÓÚ±íʵÏÖµÄn-··ÖÖ§Ìõ¼þÖÐ×î¶ÀÌØµÄµØ·½£¬ËüʹµÃÎÒÃÇÔÚÄæÏò¹ý³ÌÖÐÄܹ»¸üÈÝÒ×µØÊ¶±ð³ö´úÂëÖеÄn-··ÖÖ§Ìõ¼þ¡£²»Í¬ÓÚÄãÔÚÄæÏòÖг£³£Åöµ½µÄÆäËûÎÞÌõ¼þÌø×ªËù²ÉÓõÄÁ¢¼´Ó²±àÂëµØÖ·£¬ÕâÖÖÀàÐ͵ÄJMPÖ¸Áî²ÉÓÃÁ˶¯Ì¬¼ÆËãÄÚ´æµØÖ·£¬£¨ÔÚ·´»ã±à´úÂëÖÐÕâ¸öµØÖ·Í¨³£ÊÇÓÃÀ¨ºÅÀ¨ÆðÀ´µÄ£©µÄ·½·¨À´»ñȡĿ±êµØÖ·£¨Õâʵ¼ÊÉÏÊDZí²éÕÒ²Ù×÷£©¡£
µ±Äã²é¿´Ã¿¸öÌõ¼þ¿éµÄ´úÂëʱ£¬×¢ÒâÒ»ÏÂÿ¸öÌõ¼þcases¶¼ÒÔÒ»¸öÎÞÌõ¼þJMPÖ¸Áî½áÊø£¬¸ÃJMPÖ¸ÁîµÄ¹¦ÄÜÊÇÌø×ªµ½Switch¿éÖ®ºóµÄ´úÂëÖ´ÐС£ÓÐÒ»¸öÀýÍâµÄÇé¿ö£¬¼´case #3£¬Ëü²»ÊÇÒÔbreakÖ¸Áî½áÊøµÄ¡£Õâ±íÃ÷µ±Ö´ÐÐÍêcase #3ºó£¬³ÌÐò»áÖ±½ÓתÏòcase #4¡£ÔÚʹÓñíʵÏÖµÄÇé¿öÏÂÕâ»á˳ÀûµØÖ´ÐÐÏÂÈ¥£¬ÒòΪ±àÒëÆ÷Êǰ´ÕÕ˳ÐòÔÚÄÚ´æÖдæ·Å¸÷¸öcaseµÄ¡£Case #4µÄ´úÂë×ÜÊÇ·ÅÔÚ½ô½Ó×Åcase #3Ö®ºóµÄλÖã¬ÕâÑù±àÒëÆ÷¾Í¿ÉÒÔ±ÜÃâÖ´ÐÐÎÞÌõ¼þJMPÖ¸Áî¡£
Ê÷ʵÏÖ
µ±Switch¿éµÄ·ÖÖ§Ìõ¼þ²¢²»ÊʺÏÓñíʵÏֵϰ£¬±àÒëÆ÷»á²ÉÓöþ²æÊ÷ËÑË÷²ßÂÔÀ´¾¡¿ÉÄÜ¿ìµØÕÒµ½ÒªÕҵĵ¥Ôª¡£¶þ²æÊ÷ËÑË÷ÊǼÆËã»ú¿ÆÑ§ÖеÄÒ»¸ö»ù±¾¸ÅÄî¡£
»ùÓÚ±íʵÏÖµÄn-··ÖÖ§Ìõ¼þµÄȡֵ·¶Î§
ͨ³£Çé¿öÏ£¬µ±ÄãÓöµ½Ò»¸öÍêÈ«ÊÇÓõ¥¶ÀµÄÌø×ª±íʵÏÖµÄSwitch¿éʱ£¬Äã¿ÉÒÔ·ÅÐĵؼٶ¨ÔÚÔ´´úÂëÖÐÕâ¸öSwitch¿éµÄ¸÷¸öcase³£ÊýÖ®¼äµÄÊýÖµ¼ä¾à·Ç³£Ð¡¡£Èç¹ûÕâЩ³£ÊýÖ®¼äµÄ¼ä¾àºÜ´ó£¬±íʵÏÖ»áÀ˷ѺܶàÄڴ棬ÒòΪÕâ¸ö±íÒª°üº¬ºÜ¶àÎÞÓõĵ¥Ôª£¬´Ó¶øÊ¹±í±äµÃºÜ´ó¡£²»¹ý£¬ÓÐʱºò±àÒëÆ÷¿ÉÄÜ»áΪһ¸öSwitch¿é´´½¨¼¸ÕÅ±í£¬²¢ÔÚÿÕűíÖдæ·Åȡֵ±È½Ï½Ó½üµÄÒ»×écaseµÄµØÖ·¡£Èç¹ûSwitch¿éÖи÷¸öcase³£ÊýÖ®¼ä½Ï´ó¼ä¾àµÄÇé¿ö²»Ì«¶àµÄ»°£¬ÕâÒ»·½°¸»¹ÊDZȽÏÓÐЧµÄ¡£

ͼA.11 Switch¿éµÄ±íʵÏÖ
¶þ²æÊ÷ʵÏֵĻù±¾Ë¼Â·ÊÇ£º¸ù¾ÝÒª²éÕÒÏîµÄȡֵ´óС½«ËüÃǷֳɸöÊý»ù±¾ÏàͬµÄÁ½×飬²¢¼Ç¼ÿһ×éµÄȡֵ·¶Î§¡£¶Ôÿһ×éÔÙÖØ¸´Õâ¸ö·Ö×é¹ý³Ì£¬Ö±ÖÁ·Öµ½µ¥¶ÀµÄÏîΪֹ¡£ÔÚ²éÕÒµÄʱºò£¬ÄãÊ×ÏÈÈ·¶¨ÄãÒªÕÒµÄÖµÔÚÁ½¸ö´ó×éÖеÄÄÄÒ»¸ö£¨±íÃ÷ÄǸö×éÖлá°üº¬ÄãÒªÕÒµÄÏ¡£È»ºó£¬ÄãÔÙÔÚǰһ²½È·¶¨µÄ×éÄÚÈ·¶¨Äĸö×Ó×éÖлá°üº¬ÄãÒªÕÒµÄÏ¾ÍÕâÑù²»¶ÏÖØ¸´£¬Ö±µ½ÕÒµ½ÄãÒªÕÒµÄÏî¡£
ÒªÓöþ²æÊ÷ʵÏÖSwitch¿é£¬±àÒëÆ÷±ØÐëÊ×ÏȰÑSwitch¿é±íʾ³É¶þ²æÊ÷¡£ËüµÄ»ù±¾Ë¼Â·ÊÇ£ºÓɱàÒëÆ÷»áÔÚÉú³ÉµÄ´úÂëµÄʱºòÊ×ÏȲâÊÔ¸ø¶¨ÖµÊÇÔÚµÚÒ»×éÖл¹Êǵڶþ×éÖУ¬¶ø²»ÊÇÔÚÔËÐÐʱÓÃÕâ¸ö¸ø¶¨ÖµÓëÿһ¸ö¿ÉÄܵÄcase½øÐбȽϡ£È»ºó±àÒëÆ÷Ìø×ªµ½ÁíÒ»¸ö´úÂëÇø£¬ÓëÕâ¸öÉÔСһµãµÄ×Ó×飨subgroup£©ÀïµÄÖµ½øÐвâÊԱȽϡ£ÕâÒ»¹ý³Ì½«Ò»Ö±Öظ´½øÐУ¬Ö±ÖÁÕÒµ½ÕýÈ·µÄÏî»òÕßÍ˳öÁËÌõ¼þ¿é£¨Èç¹ûûÓÐÕÒµ½ºÍÒªÕÒµÄֵƥÅäµÄcaseµÄ»°£©¡£
ÎÒÃÇÀ´¿´Ò»ÏÂÕâ¶ÎÓÃCÓïÑÔʵÏÖµÄSwitch¿é£¬²¢¿¼²ìһϱàÒëÆ÷ÊÇÔõÑù½«Ëü±ä»»³É¶þ²æÊ÷µÄ¡£

ͼA.12ÑÝʾÁ˱àÒëÆ÷ÊÇÔõÑù°ÑÇ°ÃæµÄSwitch¿éת»¯³É¶þ²æÊ÷µÄ£¬²¢¸ø³öÁ˱àÒëÆ÷ΪʵÏÖÿ¸ö¶þ²æÊ÷½áµãËùÉú³ÉµÄ»ã±àÓïÑÔ´úÂë¡£

ͼA.12 Switch¿éµÄÊ÷ʵÏÖÒÔ¼°»ã±àÓïÑÔ´úÂë
»ùÓÚÊ÷ʵÏÖµÄn-··ÖÖ§Ìõ¼þÓÐÒ»¸ö¶ÀÌØµÄÌØµã¡ª¡ªÒª¶ÔÒ»¸ö¼Ä´æÆ÷Ö´Ðжà´Î¼õ·¨£¬ÕâÒ»µãʹµÃÎÒÃÇÔÚÔĶÁ·´»ã±à´úÂëʱ±È½ÏÈÝÒ×ʶ±ð³öËü¡£ÕâЩ¼õ·¨µÄºóÃæÍ¨³£¸ú×ŵÄÊÇÌøÏòÌØ¶¨case¿éµÄÌõ¼þÌø×ª£¨Äã¿ÉÒÔÔÚͼA.12Öеġ°501_Or_Below¡±caseÖÐÇå³þµØ¿´µ½ÕâÖÖ²¼¾Ö£©¡£±àÒëÆ÷ͨ³£´Ó´«¸øÌõ¼þ¿éµÄÔʼֵ¿ªÊ¼£¬Öð½¥´ÓÔʼֵÖмõȥijЩֵ£¨ÕâЩֵͨ³£¶¼ÊÇcase¿éµÄÖµ£©£¬²¢²»¶Ï²âÊÔ½á¹ûÊDz»ÊÇΪ0¡£ÕâÊÇÓÃ×îÉٵĴúÂëÀ´È·¶¨ÒªÌø×ªµ½ÄÄÒ»¸öcase¿éµÄÒ»ÖÖ¸ßЧµÄ·½·¨¡£
A.2.7 Ñ»·
Äã¿ÉÒÔ°ÑÑ»·¿´×÷ÊÇÎÒÃÇǰ±ßÌÖÂÛ¹ýµÄÌõ¼þ´úÂë¿é£¬Ö»²»¹ýËüÊDz»¶ÏµØÖظ´Ö´ÐÐÖ±µ½Ìõ¼þ²»ÔÙÂú×ãΪֹ¡£Ñ»·Í¨³££¨¶ø²»ÊÇ×ÜÊÇ£©»á°üº¬Ò»¸öijÖÖÀàÐ͵ļÆÊýÆ÷£¬ÓÃÒÔ¿ØÖÆÀëÑ»·½áÊø»¹Ê£¶àÉٴεü´ú¡£»ù±¾ÉÏÈκÎÒ»Öָ߼¶ÓïÑÔµÄÑ»·¶¼¿ÉÒÔ·ÖΪÁ½ÀࣺÏȲâÊÔÑ»·£¨pretested loops£¬ÆäÂß¼²âÊÔÔÚÑ»·Ìå֮ǰ£¬¡°Ñ»·Ì塱µÄ´úÂë»á±»Öظ´Ö´ÐУ©ºÍºó²âÊÔÑ»·£¨posttestd loops£¬Âß¼²âÊÔÔÚÑ»·ÌåÖ®ºó£©¡£
ÈÃÎÒÃÇÀ´¿´¿´ÕâЩÀàÐÍÑ»·£¬²¢¿¼²ìÒ»ÏÂËüÃÇÔÚ»ã±àÓïÑÔÖÐÊÇÔõô±íʾ¡£
ÏȲâÊÔÑ»·
¾¡¹ÜÏȲâÊÔÑ»·ÔÚЧÂÊÉÏÒª±Èºó²âÊÔÑ»·ÉÔÉÔ²îһЩ£¬µ«ÊÇËü¿ÉÄÜÊÇʹÓõÃ×î¹ã·ºµÄÑ»·¹¹Ôì¡£ÏȲâÊÔÑ»·µÄЧÂÊÉÔ²îµÄÔÒòÊÇ£º»ã±àÓïÑÔ´úÂë±ØÐëÓÃÁ½¸öÌø×ªÖ¸ÁîÀ´±íʾһ¸öÏȲâÊÔÑ»·£¬Ò»¸öÊÇÔÚÑ»·Ò»¿ªÊ¼µÄÌõ¼þ·ÖÖ§Ö¸Áµ±¸ÃÌõ¼þ²»ÔÙÂú×ãʱ¾ÍÖÕֹѻ·£©£¬ÁíÒ»¸öÊÇÔÚÑ»·½áβ´¦µÄÎÞÌõ¼þÌø×ªÖ¸Á¡ªÓÃÀ´Ìø×ª»ØÑ»·µÄ¿ªÊ¼´¦¡£ÎÒÃÇÀ´¿´Ò»¸ö¼òµ¥µÄÏȲâÊÔÑ»·µÄÀý×Ó£¬¿´¿´±àÒëÆ÷ÊÇÔõÑùʵÏÖËüµÄ£º

Äã¿ÉÒÔÈÝÒ׵ؿ´³öÕâÊÇÒ»¸öÏȲâÊÔÑ»·£¬ÒòΪÔÚÑ»·µÄ¿ªÊ¼´¦ÏȲâÊÔÁËcÊDz»ÊÇСÓÚ1000£¬È»ºó²Å¿ªÊ¼Ö´ÐÐÑ»·Ìå¡£´ó¶àÊý±àÒëÆ÷±àÒëÇ°ÃæÕâ¶Î´úÂë¶¼»áÉú³ÉÏÂÃæµÄ»ã±àÓïÑÔ´úÂ룺

ºÃÏñ¾¡¹ÜÔ´´úÂëÖвâÊÔÌõ¼þλÓÚÑ»·Ìå֮ǰ£¬±àÒëÆ÷ÈÏΪ°ÑËüµÄλÖû»Ò»Ï±ȽϺÏÊÊ¡£ÕâÊÇÒòΪÔÚÑ»·Ö®ºóÔÙ²âÊÔ¼ÆÊýÆ÷»áÔÚÐÔÄÜÉÏ»áÉÔÓÐÌá¸ß£¨Ïà¶Ô±È½ÏС£©¡£¾ÍÏñÎÒËù½âÊ͵ÄÄÇÑù£¬°ÑÏȲâÊÔÑ»·¸Ä³Éºó²âÊÔÑ»·Òâζ×űàÒëÆ÷¿ÉÒÔÈ¥µôÑ»·½áβ´¦µÄÎÞÌõ¼þJMPÖ¸Áî¡£
Õâ¸öºó²âÊÔÑ»·ÊµÏÖÖдæÔÚÒ»¸öDZÔÚµÄΣÏÕ¡£Èç¹û¼ÆÊýÆ÷´ÓÒ»¸öÔ½½çµÄÖµ£¨out-of-bounds value£©¿ªÊ¼¼ÆÊý»áÔõÑù£¿Õâ¿ÉÄܻᵼÖ¸÷ÖÖÎÊÌ⣬ÒòΪѻ·ÌåʹÓÃÑ»·¼ÆÊýÆ÷À´·ÃÎÊÊý×é¡£³ÌÐòԱϣÍûÔÚÑ»·ÌåÖ´ÐÐ֮ǰ¾Í²âÊÔÌõ¼þ£¬¶ø²»ÊÇÖ®ºó£¡µ«ÊÇÔÚÕâ¸öÀý×ÓÖв»»á²úÉúÕâÖÖÎÊÌ⣬ÒòΪ¼ÆÊýÆ÷ÔÚÑ»·¿ªÊ¼Ö®Ç°¾Í±»ÏÔʽµØ³õʼ»¯Îª0ÁË£¬±àÒëÆ÷ÖªµÀÕâ¸öÖµÊÇ0£¬Ã»ÓвâÊԵıØÒª¡£Èç¹û¼ÆÊýÆ÷µÄÖµÀ´×ÔÒ»¸öδ֪µÄÊý¾ÝÔ´£¨±ÈÈç˵ÊÇ´ÓÒ»¸öÆäËûδ֪µÄº¯Êý´«µÝ¹ýÀ´µÄÒ»¸ö²ÎÊý£©£¬±àÒëÆ÷¿ÉÄܾ͵ðÑÂß¼²âÊÔ·ÅÔÚÔÀ´µÄλÖãºÕâ¶Î´úÂ뿪ʼµÄλÖá£
ÎÒÃÇÀ´ÊÔ×ŰÑÇ°ÃæµÄCÓïÑÔÑ»·ÖеļÆÊýÆ÷c¸Ä³ÉÒ»¸öÍⲿ´«ÈëµÄÖµ£¬²¢ÖØÐ±àÒëÕâ¸öÑ»·¡£ÕâÖÖÇé¿öÏÂMicrosoft±àÒëÆ÷µÄÊä³ö½á¹ûÈçÏ£º

¿´À´£¬ÔÚÕâÖÖÇé¿öϱàÒëÆ÷»¹Òª¾¡Á¿±ÜÃâʹÓÃÕâÁ½¸öÌø×ªÖ¸Áî¡£±àÒëÆ÷²¢Ã»ÓаѱȽÏÖ¸Áî·ÅÔÚÑ»·µÄ¿ªÊ¼´¦£¬Ò²Ã»ÓÐÔÚ½áβ´¦¼ÓÎÞÌõ¼þÌø×ªÖ¸ÁËü¼¸ºõ»¹Î¬³ÖÔÑù£¬Ö»ÊÇÔÚÑ»·µÄ¿ªÊ¼´¦¼ÓÁËÁíÒ»¸ö²âÊÔÌõ¼þ¡£Õâ¸öÔÚÑ»·¿ªÊ¼Ö®Ç°µÄ²âÊÔ£¨Õâ¸öÌõ¼þÖ»²âÊÔÒ»´Î£¬ÒòΪËü²»ÔÚÑ»·ÌåÄÚ£©¿ÉÒÔÈ·±£ÔÚ¼ÆÊýÆ÷µÄÖµÊÇ·Ç·¨µÄÇé¿öϲ»½øÈëÑ»·¡£Ñ»·µÄÆäÓಿ·Ö¶¼Î¬³ÖÔÑù¡£
ÎÒÃÇÕâÀïÌÖÂÛÕâ¸öÌØÀý£¬ÊÇΪÁË˵Ã÷¡°for¡±Ñ»·¾ÍµÈЧÓÚÎÒÃÇÕâÀïËù½²µÄÏȲâÊÔÑ»·¡£
ºó²âÊÔÑ»·
Èç¹ûÔڸ߼¶ÓïÑÔÖÐÖ±½ÓʵÏÖºó²âÊÔÑ»·£¬¶ø±àÒëÆ÷Éú³ÉµÄÒ²ÊǺó²âÊÔÑ»·£¬ÄÇô»á¶Ô×îÖյĻã±àÓïÑÔ´úÂë²úÉúʲôÑùµÄÓ°ÏìÄØ£¿ºÁ²»ÒâÍ⡪¡ªÓ°Ïì·Ç³£Ð¡¡£
µ±³ÌÐòÖÐÓÐÒ»¸ö¡°do¡while()£ºÑ»·Ê±£¬±àÒëÆ÷»áÉú³ÉÒ»¶ÎºÍÇ°ÃæÐ¡½ÚÖеĴúÂëÐòÁзdz£ÏàËÆµÄ´úÂ롣ΨһµÄÇø±ð¾ÍÊÇ£ºÓá°do¡while()¡±Ñ»·±àÒëÆ÷¾Í²»±Øµ£ÐÄÔÚµÚÒ»´ÎÑ»·ÖÐÑ»·²âÊÔÌõ¼þÊÇ·ñÂú×ãÁË¡£Ëü±»·ÅÔÚÁËÑ»·µÄĩ⣬Òò´Ë±ØÐëÔÚÑ»·µÄĩβ½øÐвâÊÔ¡£ÉÏÒ»ÖÖÇé¿öÏÂÎÒÃǽ«¼ÆËãÆ÷µÄ³õʼֵ¸ÄΪһ¸öδ֪µÄÖµ£¬´Ó¶øÊ¹µÃ±àÒëÆ÷ÔÚÑ»·¿ªÊ¼´¦Ôö¼ÓÁËÒ»Ìõ²âÊÔÖ¸Á¡°do¡while()¡±Ñ»·ÊDz»ÐèÒªÕâÑù×öµÄ¡£Õâ¾ÍÊÇ˵ºó²âÊÔÑ»·µÄ²âÊÔÂß¼×ÜÊÇ·ÅÔÚÑ»·ÌåÖ®ºó£¬ÓëÆäÔÚÔ´´úÂëÖеÄλÖÃÊÇÒ»Öµġ£
Ñ»·Ìø³öÌõ¼þ
Ñ»·Ìø³ö£¨Loop Break£©Ö¸µÄÊÇÑ»·ÌåÄÚ²¿µÄ´úÂë°ÑÑ»·½áÊø£¨ÔÚCºÍC++ÓïÑÔÖÐʹÓÃbreak¹Ø¼ü×ÖÀ´ÊµÏÖÑ»·Ìø³ö£©£¬ÆäÌø³öËùÂú×ãµÄÌõ¼þ¼´ÎªÑ»·Ìø³öÌõ¼þ¡£break¹Ø¼ü×ÖµÄ×÷ÓþÍÊÇÖжÏÑ»·£¬²¢Ìø×ªµ½Ñ»·ÌåÖ®ºóµÄ´úÂë¡£ÏÂÃæÊÇÔÚÇ°Ãæ´úÂëµÄ»ù´¡ÉϼÓÈëÁËÒ»¾äbreakÓï¾äºóµÄ»ã±à´úÂ룺

Õâ¶Î´úÂëÓëÉÏÒ»ÀýÂÔÓв»Í¬£¬ÒòΪ¾¡¹Ü¼ÆÊýÆ÷»¹ÊÇÀ´×ÔÓÚÒ»¸öδ֪µÄÊý¾ÝÔ´£¬µ«È´Ö»ÊÇÔÚÑ»·µÄ½áβ´¦²âÊÔÁËËüµÄÖµ¡£Õâ¾Í±íÃ÷ËüÊÇÒ»¸öºó²âÊÔÑ»·¡£ÁíÍ⣬´úÂëÖл¹¼ÓÁËÒ»¸öеIJâÊÔ£ºÔÚ³õʼ»¯µ±Ç°Êý×éÔªËØÖ®Ç°¼ì²éËüÊDz»ÊÇΪ0£¬Èç¹ûËüΪ¡°·ÇÁ㡱£¬ÔòÌø×ªµ½
AfterLoop¡£Õâ¾ÍÊÇÄÇÌõbreakÓï¾ä¡ª¡ªÕâ¸öÃû×ֱȹýÈ¥ÔÚÉÙÊý¼¸ÖÖ³ÌÐòÉè¼ÆÓïÑÔÖÐÔø¾·Ç³£Á÷ÐеÄgotoÃüÁî¸üºÃÌýЩ¡£
ÓÉ´Ë£¬Äã¿ÉÒÔºÜÈÝÒ×µØÍƶϳöÆäÔ´´úÂëµÄ»ù±¾Ñù×Ó£º

Ñ»·Ìø¹ý±¾´ÎÑ»·Óï¾ä
ÔÚCºÍC++ÓïÑÔÖÐÌø¹ý±¾´ÎÑ»·µÄÓï¾äÊÇÓÃcontinue¹Ø¼ü×ÖÀ´ÊµÏֵġ£¸ÃÓï¾äÌø¹ýÑ»·µ±Ç°µÄµü´ú²Ù×÷£¬Ö±½ÓÌø×ªµ½Ñ»·µÄÌõ¼þÓï¾äÅжÏÊÇ·ñÒªÖ´ÐÐÏÂÒ»´Îµü´ú£¬»¹ÊÇÖ±½ÓÍÆ³öÑ»·¡£Ñ»·µÄ¼ÆÊýÆ÷£¨Èç¹ûÓõ½¼ÆÊýÆ÷µÄ»°£©Í¨³£²»»á½øÐÐÔöÁ¿ÔËË㣬ÒòΪʵÏÖ¼ÆÊýÆ÷ÔöÁ¿ÔËËãµÄ´úÂë»áºÍÑ»·ÌåµÄÆäÓಿ·ÖÒ»Æð±»Ìø¹ýÁË£¬µ±È»£¬¾ßÌåÇé¿ö»¹È¡¾öÓÚÑ»·µÄÀàÐÍ¡£ÕâÒ²ÊÇforÑ»·ÓëwhileÑ»·µÄÇø±ðÖ®Ò»¡£ÔÚforÑ»·ÖУ¬ÊµÏÖ¼ÆÊýÆ÷ÔöÁ¿ÔËËãµÄ´úÂë±»µ±×÷ÊÇÑ»·Âß¼Óï¾äµÄÒ»²¿·Ö£¬Òò´ËÔÚforÑ»·ÖеÄcontinue²»»áÌø¹ý¼ÆÊýÆ÷ÔöÁ¿ÔËËã´úÂëµÄ¡£ÎÒÃÇÀ´¿´¿´ÏÂÃæÕâ¶Î±àÒëÆ÷Ϊһ¸ö´øÓÐÌø¹ý±¾´ÎÑ»·µÄÑ»·½á¹¹Éú³ÉµÄ»ã±àÓïÑÔ´úÂ룺

Õâ¶Î´úÂëºÍÄãÔÚǰ±ßÀý×ÓÖп´¼ûµÄ´úÂë»ù±¾ÉÏÊÇÒ»ÑùµÄ£¬Ö»ÊÇÓÃcontinueÃüÁî´úÌæÁËbreakÃüÁî¡£×¢ÒâÒ»ÏÂÌõ¼þÓï¾äÊÇÔõÑùÌø×ªµ½NextCycle²¢Ìø¹ý¼ÆÊýÆ÷µÄÔöÁ¿ÔËËãµÄ¡£È»ºóÕâ¶Î³ÌÐò²âÊÔÁ˼ÆÊýÆ÷µÄÖµ£¬Èç¹û¼ÆÊýÆ÷СÓÚ1000µÄ»°£¬ÔòÌø»Øµ½Ñ»·¿ªÊ¼´¦¼ÌÐøÑ»·¡£
ÏÂÃæÊÇÉÔ×öÐ޸ĺóµÄ´úÂ룺

ÕâÀïΨһµÄ²»Í¬µãÔÚÓÚ£ºNextCycleλÖñ»ÌáǰÁË£¬·ÅÔÚÁ˼ÆÊýÆ÷ÔöÁ¿ÔËËã´úÂëµÄÇ°Ãæ¡£Õâ¾ÍÊÇ˵Õâ¶Î´úÂëÓëÇ°Ãæ´úÂë²»Ò»ÑùÁË£¬continueÓï¾ä»áÈüÆÊýÆ÷ÏÈ×öÔöÁ¿ÔËËãÔÙÖ´ÐÐÑ»·Âß¼¡£ÕâÒâζ×ÅÕâ¸öÑ»·¿ÉÄÜÊÇÓÃfor¹Ø¼ü´ÊʵÏֵġ£ÊµÏÖÕâÖÖÀàÐ͵ÄÑ»·´úÂ뵱ȻҲ¿ÉÒÔ²»ÓÃforÑ»·£¬±ÈÈçÓÃwhile»òÕß¡°do¡while¡±Ñ»·²¢½«¼ÆÊýÆ÷ÔöÁ¿ÔËËã·ÅÔÚÌõ¼þÓï¾äÄÚ£¨Ê¹ÓÃÁË¡°++¡±²Ù×÷·û£©¡£ÕâÑùµÄ»°£¬Âß¼Óï¾ä¿ÉÄÜ»áÊÇÕâÑù£º
![]()
Ñ»·Õ¹¿ª
Ñ»·Õ¹¿ª£¨Loop Unrolling£©ÊÇÒ»ÖÖ´úÂë¼¶ÕûÐΣ¨code-shaping£©µÄÓÅ»¯¼¼Êõ£¬¸Ã¼¼Êõ²»ÒÀÀµÓÚÈκξßÌåµÄCPUºÍÖ¸Á£¬Ò²¾ÍÊÇ˵Ëüʵ¼ÊÉÏÊÇÒ»ÖÖÒÔÉú³É¸ü¼Ó¸ßЧµÄ»úÆ÷ÂëΪĿ±êµÄ¸ß¼¶´úÂëÖØ¹¹¼¼Êõ¡£ÏÂÃæÕâ¶Î»ã±àÓïÑÔ´úÂëÊÇÒ»¸ö²¿·ÖÕ¹¿ªµÄÑ»·£º

Õâ¸öÑ»·ÏÔÈ»ÊÇÒ»¸ö²¿·ÖÕ¹¿ªµÄÑ»·£¬×îÃ÷ÏԵıêÖ¾¾ÍÊÇÿ´Îµü´úÖмÆÊýÆ÷»áÔö¼Ó3¡£
ʵ¼ÊÉÏ£¬±àÒëÆ÷Ëù×öµÄ¾ÍÊǽ«Ñ»·Ì叴֯ÁËÈý´Î£¬Òò´Ë£¬Ã¿´Îµü´úÊÂʵÉÏÍê³ÉµÄÊÇÈý´Îµü´úµÄ¹¤×÷¶ø²»ÊÇÒ»´Î¡£¼ÆÊýÆ÷µÄÔöÁ¿ÔËËã´úÂëÒ²±»¸ÄΪÿµü´úÒ»´ÎÔö¼Ó3¶ø²»ÊÇ1¡£Õâ´ó´óÌá¸ßÁË´úÂëµÄÖ´ÐÐЧÂÊ£¬ÒòΪѻ·µÄÔËÐпªÏú±»´ó´óµØ¼õÉÙÁË¡ª¡ªÔÀ´CMPºÍJLÖ¸ÁîÒªÖ´ÐÐ0x3e7£¨¼´999£©´Î£¬ÏÖÔÚÖ»ÐèÖ´ÐÐ0x14d£¨¼´333£©´Î¡£
ÁíÒ»ÖÖ¸üΪ´óµ¨µÄÑ»·Õ¹¿ª¼¼ÊõÊǸɴà°ÑÑ»·È¥µô£¬ÒªÑ»·¼¸´Î¾Í½«Ñ»·Ì叴֯¼¸´Î¡£µ±È»£¬ÕâÒ»¼¼ÊõÊÇ·ñ¿ÉÐл¹È¡¾öÓÚµü´úµÄ´ÎÊý£¨»¹ÒªÔÚÑ»·Õ¹¿ªÖ®Ç°ÖªµÀµü´úµÄ´ÎÊý£©¡£
A.3 ÎÞ·ÖÖ§Âß¼
һЩ´øÓбàÒëÓÅ»¯µÄ±àÒëÆ÷¾ßÓÐÉú³ÉÎÞ·ÖÖ§Âß¼µÄÌØÊâÓÅ»¯¼¼Êõ¡£ËùÓÐÕâЩ¼¼ÊõµÄÖ÷ҪĿ±êÊÇ£ºÔÚʵÏÖ¸ø¶¨µÄÂß¼Óï¾äʱ£¬Ïû³ý»òÕßÖÁÉÙ¼õÉÙËùÐèµÄÌõ¼þÌø×ª¡£ÓйØÎªÊ²Ã´Òª¾¡¿ÉÄܼõÉÙ´úÂëÖеÄÌø×ª´ÎÊýÕâ¸öÎÊÌ⣬ÎÒÃÇÔÚµÚ2ÕÂÖеÚ2.5.2½Ú¡°ÏÖ´ú´¦ÀíÆ÷µÄÓ²¼þÖ´Ðл·¾³¡±ÖÐÒѾ»Ø´ð¹ýÁË¡£¼ò¶øÑÔÖ®£¬´¦ÀíÆ÷¹ÜÏߣ¨processor pipeline£©µÄʹÓÃÒªÇó´¦ÀíÆ÷ÔÚÓöµ½Ìõ¼þÌø×ªÊ±±ØÐëÒª²Â²â»òÔ¤²â¸ÃÌø×ªÊÇ·ñ»áÖ´ÐУ¬²¢¸ù¾ÝÕâÒ»²Â²âÀ´¾ö¶¨°ÑÄÄЩָÁÊǽô¸úÔÚÌõ¼þÌø×ªÖ®ºóµÄÄÇЩָÁÊÇÌø×ªÄ¿±êµØÖ·´¦µÄÄÇЩָÁ¼Óµ½¹ÜÏßµÄĩβ¡£Èç¹û²Â²â´íÎóµÄ»°£¬¾Í»á½«Õû¸ö¹ÜÏßÇå¿Õ²¢ÖØÐÂÌîÂú½ÓÏÂÀ´ÒªÖ´ÐеÄÖ¸Áî¡£ÔÚÕâЩÇé¿öÏ£¬ÀË·Ñʱ¼äµÄ¶àÉٺܴó³Ì¶ÈÉÏÈ¡¾öÓÚ´¦ÀíÆ÷µÄÄÚ²¿Éè¼ÆºÍ¹ÜÏߵij¤¶È£¬µ«¶ÔÓÚ´ó¶àÊýÓ¦ÓùÜÏß¼¼ÊõµÄCPU£¬ÖØÐÂÌîÂú¹ÜÏßÊÇÒ»Ïî·Ç³£·ÑʱµÄ²Ù×÷¡£
һЩ±àÒëÆ÷Óø´ÔÓµÄËãÊõÔËËãºÍÌõ¼þÖ¸ÁîÀ´ÊµÏÖÌØÊâµÄÓÅ»¯·½·¨£¬ÔÙÓÃÕâЩÓÅ»¯·½·¨À´Ïû³ý»ò¼õÉÙʵÏÖÔ´´úÂëÖеÄÂß¼ËùÐèµÄÌõ¼þ×ªÒÆÖ¸Áî¡£ÕâÖÖÓÅ»¯¼¼ÊõÒ»°ãÓ¦ÓÃÓÚÄÇЩ¸ù¾ÝÌõ¼þ¶Ô²Ù×÷ÊýÖ´ÐÐÒ»Ìõ»ò¶àÌõËãÊõ»ò¸³Öµ²Ù×÷µÄ´úÂë¡£Æä˼ÏëÊÇ£º½«Á½Ìõ»òÕ߸ü¶àµÄÌõ¼þÖ´Ðз¾¶×ª»¯ÎªÒ»¶Î˳ÐòÖ´ÐеÄËãÊõÔËËã´úÂ룬ÔËËãµÄ½á¹û²»±ä£¬µ«ÊDz»ÐèÒªÌõ¼þÌø×ª¡£
³£ÓõıàÒëÆ÷ÓÅ»¯Êä³öµÄÎÞ·ÖÖ§Âß¼Ö÷ÒªÓÐÁ½ÖÖÀàÐÍ¡£Ò»ÖÖÊÇÔÚ²»¸Ä±äÔËËã½á¹ûµÄÇé¿öϽ«Âß¼Óï¾äת»»³É´¿ËãÊõ´úÂë¡£ÕâÒ»¼¼ÊõÓкܴóµÄ¾ÖÏÞ£¬Ö»ÄÜÓ¦ÓÃÓÚÏà¶Ô¼òµ¥µÄ´úÂëÐòÁÐÉÏ¡£¶ÔÓÚÂß¼ÉÔ΢¸´ÔÓһЩµÄ´úÂ룬±àÒëÆ÷ÓÐʱ¾ÍÒª²ÉÓÃÒ»Ð©ÌØÊâµÄÌõ¼þÖ¸ÁîÁË£¨Èç¹ûÄ¿±êCPUÖ§³ÖÕâÖÖÌØÊâµÄÌõ¼þÖ¸ÁîµÄ»°£©¡£ÊµÏÖÎÞ·ÖÖ§Âß¼µÄÁ½ÖÖÖ÷Òª·½·¨½«ÔÚ½ÓÏÂÀ´¼¸Ð¡½ÚÖÐÌÖÂÛ¡£
A.3.1 ´¿ËãÊõʵÏÖ
ijЩÂß¼Óï¾ä¿ÉÒÔÖ±½Óת»»³ÉһϵÁÐËãÊõÔËË㣬¸ù±¾¾Í²»ÐèҪʹÓÃÌõ¼þÓï¾ä¡£ÓÐһЩÇÉÃîµÄÊýѧ¼¼ÇÉ¿ÉÒÔÈñàÒëÆ÷°ÑÔ´´úÂëÖеķÖÖ§Â߼ת»»³É¼òµ¥µÄËãÊõÔËËãÐòÁС£¿¼ÂÇÒ»ÏÂÏÂÃæÕâ¶Î´úÂ룺

ÉÏÃæÕâÒ»¶ÎÓɱàÒëÆ÷Éú³ÉµÄ´úÂëÔÚIA-32³ÌÐò·Ç³£³£¼û£¬ºÜ¶àÄæÏò¹¤³ÌÈËÔ±¶¼»¨·ÑÁË´óÁ¿µÄʱ¼äÈ¥½â¶ÁËüµÄÒâ˼¡£¼øÓÚÕâÖÖ´úÂëµ½´¦¿É¼û£¬ÄãÓ¦µ±ºÃºÃ¶ÁÒ»ÏÂÕâ¶Î´úÂ룬²¢È·±£×Ô¼ºÍêÈ«Àí½âËüµÄ¹¤×÷ÔÀí¡£
Õâ¶Î´úÂ뿪ʼµÚÒ»ÌõÖ¸ÁîÊǽ«¾Ö²¿±äÁ¿£¨EAX¼Ä´æÆ÷£©ºÍ0x00001000×÷Ò»¸ö¼òµ¥µÄÂß¼¡°AND£¨Ó룩¡±²Ù×÷£¬²Ù×÷½á¹û´æ·ÅÔÚEAX¼Ä´æÆ÷ÖУ¨ANDÖ¸Áîͨ³£¶¼½«½á¹û´æ·Åµ½µÚÒ»¸ö²Ù×÷ÊýÖУ¬¼´×ó²Ù×÷Êý£©¡£È»ºó½Ó×ÅÖ´ÐÐÁËÒ»ÌõNEGÖ¸ÁÕâÊÇÒ»Ìõ²»Ì«³£ÓõÄÖ¸Áî¡£NEGÊÇÒ»¸ö¼òµ¥µÄÈ¡·´Ö¸ÁÓÃÀ´¶Ô²Ù×÷ÊýµÄËãÊõ·ûºÅÈ¡·´¡ª¡ªÓÐʱºòÒ²³ÆËüΪ2µÄ²¹Â루two¡¯s complement¡£Òë×¢£º1µÄ²¹ÂëÓëNOTÖ¸Áî¶ÔÓ¦£¬ÊÇÂ߼ȡ·´Ö¸Á¡£´ÓÊýѧµÄ¹ÛµãÀ´¿´£¬NEGÖ¸ÁîÖ´ÐÐÏÂÃæÒ»¸ö¼òµ¥µÄ²Ù×÷
![]()
Õâ¶Î´úÂëÖÐÓÐȤµÄÊÇSBBÖ¸Áî¡£SBBÊÇÒ»Ìõ´ø½èλµÄ¼õ·¨Ö¸ÁÕâ¾ÍÊÇ˵SBB½«µÚ¶þ¸ö²Ù×÷Êý£¨¼´ÓÒ²Ù×÷Êý£©¼ÓÉϱê־λCF£¬È»ºó½«½á¹ûÓõÚÒ»¸ö²Ù×÷ÊýÀ´¼õ¡£ÏÂÃæÊÇSBBµÄα´úÂ룺
![]()
×¢Òâǰ±ßµÄ´úÂëÖн«SBBÖ¸ÁîÓÃÓÚ¶Ôͬһ¸ö²Ù×÷ÊýÖ´ÐмõÔËË㣬¼´ÓÃEAX¼Ä´æÆ÷¼õÈ¥EAX£¬Èç¹û²»¿¼ÂDZê־λCFµÄ»°£¬ÕâÌõÖ¸ÁîÔÚÊýѧÉÏÊÇûÓÐÈκÎÒâÒåµÄ¡£ÒòΪ½«CF¼Óµ½Á˵ڶþ¸ö²Ù×÷ÊýÉÏ£¬ËùÒÔ½á¹ûֻȡ¾öÓÚCF¡£Èç¹û¡°CF == 1¡±£¬ÄÇôEAX½«±ä³É-1¡£Èç¹û¡°CF == 0¡±£¬ÄÇôEAX½«±ä³É0¡£ÏÔÈ»ÔÚµÚÒ»ÌõNEGÖ¸ÁîÖ®ºóEAXµÄÖµ¾ÍSBB²Ù×÷ÎÞ¹ØÁË¡£ÎÊÌâÊÇ£¬ÎªÊ²Ã´±àÒëÆ÷»¹Òª¡°Àͼݡ±NEGÖ¸ÁîÄØ£¿
Intel´¦ÀíÆ÷µÄÎĵµÖÐÉùÃ÷NEGÖ¸Áî³ýÁ˶ԲÙ×÷Êý×÷·ûºÅÈ¡·´Í⣬Ëü»¹Òª¸ù¾Ý²Ù×÷ÊýµÄÖµÉèÖÃCF±ê־λµÄÖµ¡£Èç¹ûÖ´ÐÐNEGÖ¸Áîʱ²Ù×÷ÊýΪ0£¬ÔòCF½«±»ÖÃΪ0¡£Èç¹û²Ù×÷Êý
Ϊ·ÇÁ㣬ÔòCF½«±»ÖÃΪ1¡£¿´ÉÏÈ¥ºÃÏñÓÐЩ±àÒëÆ÷ϲ»¶½«NEGÖ¸ÁîÌṩµÄÕâÖÖ¸½¼Ó¹¦ÄÜÓÃ×÷²âÊÔ²Ù×÷ÊýµÄÖµÊÇ·ñΪ0µÄÒ»ÖÖÇÉÃîµÄ·½·¨¡£ÎÒÃÇ¿ìËٻعËÒ»ÏÂÕâ¶Î´úÂëµÄÿһ²½£º
, ÓÃNEGÀ´²âÊÔÔ´²Ù×÷ÊýÊÇ·ñΪ0£¬²âÊԵĽá¹û´æ·ÅÔÚCF±ê־λÖС£
, ÓÃSBBÖ¸Á½á¹û´ÓCFÖÐÈ¡³ö´æ·Åµ½Ò»¸ö¿ÉÓõļĴæÆ÷ÖС£µ±È»£¬ÓÉÓÚSBBÖ¸ÁîµÄÐÔÖÊ£¬Èç¹ûNEGµÄÔ´²Ù×÷ÊýΪ·Ç0µÄ»°£¬²âÊÔ½á¹û¼Ç¼µ½CFÖкóÔÙSBBһϣ¬½á¹û¾Í±ä³ÉÁË-1¶ø²»ÊÇ1¡£ÓÐЩÓïÑÔÓá°1¡±±íʾTrue£¬¶øÆäËûÓïÑÔÔòÓá°-1¡±±íʾTrue¡£
, ÓÉÓÚÕâ¶Î´úÂëÊÇC/C++±àÒëÆ÷Éú³ÉµÄ£¬ÕâÁ½Öָ߼¶ÓïÑÔ¶¼ÊÇÓá°1¡±±íʾTrueµÄ£¬ËùÒÔ¾ÍÐèÒªÒ»ÌõNEGÖ¸ÁֻÊÇÕâ´ÎNEGʵ¼ÊÉÏÊÇÓÃÀ´¶Ô²Ù×÷ÊýµÄ·ûºÅÈ¡·´µÄ¡£Èç¹û²Ù×÷ÊýΪ¡°-1¡±£¬Ôò½«Ëü±äΪ¡°1¡±¡£Èç¹û²Ù×÷ÊýÊÇ¡°0¡±Ôò±£³Ö²»±ä¡£
ÏÂÃæµÄα´úÂ뽫ÓÐÖúÓÚÄã¸üºÃµØÀí½âÉÏÃæ½²ÊöµÄÿһ²½£º

ʵ¼ÊÉÏ£¬Õâ¶Î´úÂëËù×öµÄ¾ÍÊDzâÊÔEAX¼Ä´æÆ÷ÖеÄÒ»¸öÌØ¶¨µÄ루0x00001000£©£¬Èç¹ûÊÇ1Ôò·µ»Ø1£¬Èç¹ûÊÇ0Ôò·µ»Ø0¡£ÕâÕæÊÇÌ«ÃîÁË£¬¾¹È»È«ÓõÄÊÇËãÊõÖ¸Á¡ªÃ»ÓÐÓõ½Ò»ÌõÌõ¼þÖ¸Áî¡£ÎÒÃǰÑÕâ¶Î´úÂë·Òë»ØCÓïÑÔ±íʾ£º

¿É¶ÁÐÔ¸üºÃÁË£¬²»ÊÇÂð£¿×÷ΪһÃûÄæÏò¹¤³ÌÈËÔ±£¬ÎÒÃǻᾳ£Åöµ½Ò»Ð©ÀàËÆÕâÑù¿É¶ÁÐԺܲ²»»áÒýÆðÈËÃÇ×¢ÒâµÄ´úÂë¡£ÖªµÀ²¢Àí½âÕâЩµ×²ã´úÂë¼¼ÇɶÔÎÒÃÇÀ´Ëµ·Ç³£ÓÐÓã¬ÒòΪËüÃÇÔÚ±àÒëÆ÷Éú³ÉµÄ´úÂëÖÐ»áÆµ·±³öÏÖ¡£
ÏÂÃæÎÒÃÇÀ´¿´ÁíÍâÒ»¸öÀý×Ó£¬Õâ¸öÀý×Ó±Èǰ±ßÄǸö»¹Òª¸´ÔÓЩ£¬ÊÇÒ»¸öÓйØÓô¿ËãÊõÔËËãʵÏָ߼¶Âß¼¹¹ÔìµÄÀý×Ó¡£

ÄãÓ¦¸Ã×¢Òâµ½ÁËÕâ¶Î´úÂëÖÐҲʹÓÃÁËNEG/SBB×éºÏ£¬Ö»ÊÇÕâ´ÎµÄ¹¦ÄÜÒª¸ü¸´ÔÓһЩ¡£´úÂëÒ»¿ªÊ¼µ÷ÓÃÁËÒ»¸öº¯Êý£¬²¢½«º¯ÊýµÄ·µ»ØÖµ¼õÈ¥4£»È»ºóʹÓÃNEGºÍSBBÖ¸ÁîÀ´²âÊÔ½á¹ûÊDz»ÊÇÁ㣬ÕâºÍÄãÔÚÉÏÒ»¸öÀý×ÓÖп´µ½µÄÊÇÒ»ÑùµÄ¡£Èç¹ûSomeFuncº¯ÊýµÄ·µ»ØÖµ¼õÈ¥4ºóµÈÓÚ0ÁË£¬SBBÖ¸Á°ÑEAX¼Ä´æÆ÷ÖÃΪ0£»Èç¹û·µ»ØÖµ¼õÈ¥4ºóΪ·ÇÁ㣬SBB½«°ÑEAXÖÃΪ-1£¨¼´Ê®Áù½øÖÆÊý0xffffffff£©¡£
½ÓÏÂÀ´µÄÁ½ÌõÖ¸ÁîÊÇÕâ¶Î´úÂëÖбȽÏÇÉÃîµÄµØ·½¡£ÎÒÃÇÏÈ´ÓÄÇÌõANDÖ¸Áî˵Æð¡£ÒòΪSBBÖ¸Á»á°ÑEAX¼Ä´æÆ÷ÖÃΪ0»òÕß0xffffffff£¬ÎÒÃÇ¿ÉÒ԰ѽÓÏÂÀ´µÄANDÖ¸Áî¿´×÷Ò»¸öÌõ¼þ¸³ÖµÓï¾ä£¨ºÜÏñÎÒÃǺóÃæÒªÌÖÂÛµÄCMOVÖ¸Á¡£Í¨¹ý¸øEAX¡°Ó롱ÉÏÒ»¸ö³£Êý£¬´úÂëʵ¼ÊÉϵȼÛÓÚ£º¡°Èç¹ûSBBµÄ¼ÆËã½á¹ûΪ0¾ÍʲôҲ²»×ö£»Èç¹û½á¹ûΪ-1£¬Ôò½«EAXÖÃΪָ¶¨µÄ³£Êý¡£¡±×öÍêÕâЩ¹¤×÷ºó£¬´úÂ뽫ÎÞÌõ¼þµØ¸øEAX¼ÓÉÏ54£¬²¢½«½á¹û·µ»Ø¸øÖ÷µ÷º¯Êý¡£
ÎÒÃÇËùÃæÁÙµÄÌôÕ½ÊÇÊÔ׎â¶Á³öÕû¶Î´úÂëµÄº¬Òå¡£ºÜÏÔÈ»Õâ¶Î´úÂë¶ÔSomeFuncº¯ÊýµÄ·µ»ØÖµ×öÁËijÖֱ任£¬²¢½«±ä»»ºóµÄÖµ·µ»Ø¸øÖ÷µ÷º¯Êý¡£ÎÒÃÇÊÔ×Å·ÖÎöÒ»ÏÂÕâ¶Î´úÂëµÄÒªµã¡£Ëƺõ·µ»ØÖµÖ»ÄÜÊÇÁ½¸öÖµÖеÄÒ»¸ö£ºÈç¹ûSBBµÄ¼ÆËã½á¹ûÊÇ0£¨Ò²¾ÍÊÇ˵SomeFuncµÄ·µ»ØÖµÊÇ4£©£¬EAX½«±»ÖÃΪ54£»Èç¹ûSBBµÄ¼ÆËã½á¹ûÊÇ0xffffffff£¬EAX½«±»ÖÃΪ2¡ª¡ªÒòΪANDÖ¸Á»á°ÑEAXÖÃΪ-52£¬ºó±ßµÄADDÖ¸Áî»á°ÑEAXÖеÄÖµ±äΪ2¡£
Õâ¶Î´úÂë±È½ÏÁËÁ½¸öÕûÊý£¬²¢ÔÚÁ½¸öÊýÏàµÈµÄÇé¿öÏ·µ»ØÒ»¸öÖµ£¬ÔÚ²»ÏàµÈµÄÇé¿öÏ·µ»ØÁíÒ»¸öÖµ£¨Ã»ÓÐʹÓÃÒ»¸ö·ÖÖ§Ìõ¼þ£©¡£ÏÂÃæÊÇÕâ¶Î»ã±àÓïÑÔ´úÂëµÄCÓïÑÔ°æ±¾£º

A.3.2 Ô¤²âÖ´ÐÐ
ÓÃËãÊõÐòÁÐʵÏÖÎÞ·ÖÖ§Âß¼ÊÇÒ»ÖÖÓô¦·Ç³£ÓÐÏ޵ļ¼ÇÉ¡£ÎªÁËʵÏÖ¸ü°ôµÄÎÞ·ÖÖ§Âß¼£¬±àÒëÆ÷»á²ÉÓÃÌõ¼þÖ¸Á¼ÙÈçÄ¿±êCPU¼Ü¹¹ÌṩÕâÖÖµÄÖ¸ÁîµÄ»°£©¡£Ìõ¼þÖ¸ÁîµÄ»ù±¾Ïë·¨ÊÇ£º±àÒëÆ÷ÓÐʱ¿ÉÒÔʹÓÃÒ»ÀàÌØÊâµÄÖ¸Á¡ª½öÔÚÌØ¶¨µÄÇé¿ö³öÏÖµÄʱºò²Å»áÖ´ÐУ¬¶ø²»ÊÇÈôúÂë¸ù¾ÝÌõ¼þתÏòÁ½¸ö²»Í¬µÄ´úÂëÇøÖÐÖ´ÐС£Èç¹ûÌõ¼þ²»Âú×㣬³ÌÐò¾Í¼òµ¥µØºöÂÔµôÕâЩָÁî¼ÌÐøÍùÏÂÔËÐС£IA-32µÄÖ¸ÁûÓÐÌṩͨÓõġ¢¿ÉÒÔʹËùÓÐÖ¸Áî¶¼±ä³ÉÌõ¼þÖ¸ÁîµÄÌõ¼þÖ´ÐÐǰ׺£¨conditional execution prefix£©¡£ÎªÁËÓÐÌõ¼þµØÖ´ÐвÙ×÷£¬IA-32ÌṩÁËרÃŵÄÌõ¼þÖ´ÐÐÖ¸Áî¡£
ijЩCPU¼Ü¹¹£¨ÈçIntelÍÆ³öµÄIA-64µÄ64λ¼Ü¹¹£©ÔÊÐíÖ¸ÁÖм¸ºõËùÓеÄÖ¸Áî¸ù¾ÝÌõ¼þÖ´ÐС£ÔÚIA-64£¨Ò²³ÆÎªItanium2£©ÖÐʹÓÃÒ»×é64¸öÅж¨¼Ä´æÆ÷£¨predicate register£©À´ÊµÏÖÌõ¼þÖ¸Áÿ¸öÅж¨¼Ä´æÆ÷ÓÃÀ´´æ´¢Ò»¸öÖ¸¶¨Ä³¸öÌØ¶¨µÄÌõ¼þÊÇTrue»òFalseµÄ²¼¶ûÖµ¡£ÔÚÖ¸ÁîÇ°Ãæ¿ÉÒÔ¼ÓÉÏij¸öÅж¨¼Ä´æÆ÷µÄÃû×Ö×÷Ϊǰ׺¡£ÏàÓ¦µÄÅж¨¼Ä´æÆ÷ÖеÄֵΪ¡°True¡±Ê±CPU²Å»áÖ´ÐÐÕâÌõÖ¸Á·ñÔòCPU¾Í½«Ëü×÷ΪһÌõNOPÖ¸ÁîÀ´¶Ô´ý¡£
ÏÂÃæ¼¸Ð¡½ÚÖÐÎÒÃǽ«ÌÖÂÛÁ½×éIA-32Ö¸ÁËüÃÇÄÜÔÚIA-32´¦ÀíÆ÷ÖÐʵÏÖÎÞ·ÖÖ§Âß¼¡£
A.3.2.1 Ìõ¼þÉèÖÃÖ¸ÁSETcc£©
SETccÊÇÒ»×éÖ¸Á£¬Õâ×éÖ¸ÁîÖ´ÐÐÓëÌõ¼þÌø×ªÖ¸ÁJccÕâ×éÖ¸ÁÏàͬµÄÂß¼±ê־λ²âÊÔ£¬Ö»ÊDz»Ö´ÐÐÌø×ª£¬ËüÖ»Ö´ÐÐÂß¼²âÊÔ²¢°Ñ½á¹û´æ·ÅÔÚÒ»¸ö²Ù×÷ÊýÖС£ÏÂÃæÊÇÒ»¸öÔõÑùÔÚʵ¼Ê´úÂëÖÐʹÓÃSETccµÄ¼òµ¥Àý×Ó¡£¼Ù¶¨Ä³¸ö³ÌÐòԱдÁËÕâÑùÒ»ÐдúÂ룺
![]()
ÔÚÕâ¸öÀý×ÓÖв¢²»ÊÇÍêÈ«·ûºÏCÓïÑԹ淶µÄ£¬Ç°±ßÕâ¾ä´úÂëÓëÏÂÃæÕâ¾ä´úÂë
![]()
Î¨Ò»Çø±ðÔÚÓÚǰ±ßÕâ¾ä´úÂë×ÜÊÇ·µ»ØÒ»¸öBooleanÁ¿¡£Èç¹ûresultµÈÓÚ0£¬½«·µ»Ø1£¬·ñÔò²»¹ÜresultµÄÖµÊǶàÉÙ¶¼·µ»Ø0¡£¶ÔÓÚµÚ¶þ¸öÀý×Ó£¬·µ»ØÖµ¾ÍÊÇ´æ´¢ÔÚresultÖеÄÖµ¡£
Èç¹ûûÓÐÎÞ·ÖÖ§Âß¼£¬±àÒëÆ÷¾Í»á²úÉúÈçϵĴúÂë»òÕßÊǷdz£ÏàËÆµÄ´úÂ룺

Èç¹ûʹÓÃSETccÖ¸Á±àÒëÆ÷¾Í¿ÉÒÔÉú³ÉÎÞ·ÖÖ§Âß¼¡£ÔÚÕâ¸öÀý×ÓÖУ¬SETNEÖ¸ÁÓÃÀ´Íê³ÉÉϱߴúÂëÖеÄJNEÖ¸ÁÒë×¢£ºÔÎÄÎóΪJEÖ¸ÁµÄ¹¤×÷£º
|
ÔÚÕâÀïʹÓÃSETNEÖ¸ÁîΪÎÒÃÇÌṩÁËÒ»¸öºÜ°ôµÄÎÞ·ÖÖ§Âß¼¡£Èç¹û¡°result == 0¡±£¬EAX¼Ä´æÆ÷½«±»ÖÃΪ0£¬·ñÔòEAX½«±»ÖÃΪ1¡£µ±È»£¬¾ÍÏñJccÖ¸Áÿ¸öSETccÖ¸ÁîµÄ¾ßÌåÌõ¼þ£¨¼´¡°cc¡±¶ÔÓ¦µÄÌõ¼þ£©¶¼·ûºÏÎÒÃDZ¾¸½Â¼Ç°ÃæÌÖÂÛ¹ýµÄÌõ¼þ´úÂë¡£
A.3.2.2 Ìõ¼þ´«ËÍÖ¸ÁCMOVcc£©
CMOVccÖ¸ÁîÊÇIA-32Ö¸ÁÖÐÁíÒ»¸öÔ¤²âÖ´ÐÐÌØÐÔ¡£CMOVccÖ¸Áî¸ù¾ÝÌõ¼þ°ÑµÚ¶þ¸ö²Ù×÷Êý¿½±´¸øµÚÒ»¸ö²Ù×÷Êý¡£¾ßÌåµÄ²âÊÔÌõ¼þÈ¡¾öÓÚËùʹÓõľßÌåµÄÌõ¼þ´úÂë¡£ºÍSETccÒ»Ñù£¬CMOVccÒ²ÓÐºÜ¶à°æ±¾¡ª¡ªÆäÖÐÎÒÃÇÔÚ±¾¸½Â¼Öн²¹ýµÄÿÌõÌõ¼þ´úÂë¶ÔÓ¦Ò»ÌõCMOVccÖ¸Áî¡£ÏÂÃæµÄ´úÂëÑÝʾÁËÒ»¸öʹÓÃCMOVccÖ¸ÁîµÄ¼òµ¥Àý×Ó£º

ǰ±ßÕâ¶Î´úÂ루ÓÉIntel¹«Ë¾µÄC/C++±àÒëÆ÷Éú³É£©ÑÝʾÁËCMOVccÖ¸ÁîµÄÒ»¸öÇÉÃîµÄÔËÓá£Õâ¶Î´úÂëµÄ˼·ÊÇ£ºEAX¼Ä´æÆ÷±ØÐë¸ù¾ÝEDX¼Ä´æÆ÷ÖеÄÖµ½ÓÊÕÁ½¸ö²»Í¬µÄÖµÖеÄÒ»¸ö¡ª¡ªÆäÖÐÒ»¸ö¿ÉÄܵÄÖµ´æ·ÅÔÚECXÖжøÁíÒ»¸ö·ÅÔÚEAXÖС£´úÂë²âÊÔEDXÊÇ·ñ
ÏÖ´ú±àÒëÆ÷ÖеÄCMOVÖ¸Áî
CMOVÖ¸ÁîÔÚÄæÏò³£¼ûµÄÓɱàÒëÆ÷Éú³ÉµÄ³ÌÐòʱ»ù±¾Éϼû²»µ½£¬Õâ¿ÉÄÜÊÇÒòΪÔÚÔçÆÚµÄIA-32´¦ÀíÆ÷ÖÐûÓÐCMOVÖ¸Á¶ø×îÔçÌṩCMOVÖ¸ÁîµÄÊÇPentium Pro´¦ÀíÆ÷¡£Òò´Ë£¬´ó¶àÊý±àÒëÆ÷ΪÁ˱ÜÃâ¾íÈëÏòºó¼æÈÝÐÔµÄÎÊÌâÖУ¬¶¼²»Ô¸ÒâʹÓÃCMOVÖ¸Áî¡£ÓÐÒâ˼µÄÊÇ£¬¼´Ê¹ÕâЩ±àÒëÆ÷±»×¨ÃÅÉèÖóÉÊÇΪ¸üÍíÍÆ³öµÄ´¦ÀíÆ÷Éú³É´úÂ룬±àÒëÆ÷ÈÔÈ»²»Ï²»¶Ê¹ÓÃCMOVÖ¸Áʵ¼ÊʹÓÃCMOVÖ¸ÁîµÄC/C++±àÒëÆ÷Ö»ÓÐÁ½¸ö¡ª¡ªIntel¹«Ë¾µÄC++±àÒëÆ÷ºÍGCC±àÒëÆ÷£¨GNUµÄC±àÒëÆ÷£©¡£µ±Ç°×îа汾µÄMicrosoft C/C++ Optimizing±àÒëÆ÷£¨°æ±¾Îª13.10.3077£©¼´Ê¹ÔÚÄ¿±ê´¦ÀíÆ÷ÒѾÏÔʽ¶¨ÒåΪÐÂÒ»´úµÄ´¦ÀíÆ÷µÄÇé¿öÏ£¬Ò²²»»áʹÓÃCMOVÖ¸Áî¡£
Âú×ãÌõ¼þÖµ£¨ÕâÀïÌõ¼þÖµÊÇ0£©£¬²¢ÓÃCMOVE£¨Èç¹ûÏàµÈµÄ»°¾ÍÖ´ÐÐÌõ¼þ´«ËÍ£©ÊµÏÖÔÚÏàµÈµÄÇé¿öϽ«ECXÖеÄÖµ¼ÓÔØ¸øEDX¡£Èç¹ûÏàµÈÌõ¼þ²»Âú×㣬Ìõ¼þ´«ËÍ£¨conditional move£©¾Í²»»áÖ´ÐУ¬Òò´ËEAX»á±£ÁôÆäÔÀ´µÄÖµ£¨ÊÇ1,000£©¡£Èç¹ûÌõ¼þ´«ËÍÕæµÄÖ´ÐÐÁË£¬¾Í½«2,000¸³¸øEAX¡£´ÓÕâЩ·ÖÎö£¬Äã»ù±¾ÉÏ¿ÉÒÔÈÝÒ×µØÍƶϳöÏÂÃæÕâ¶Î½üËÆµÄ´úÂëÁË£º

A.4 ¹¤×÷¼¯µ÷Õû¶ÔÄæÏò¹¤³ÌµÄÓ°ÏìµÄ×÷ÓÃ
¹¤×÷¼¯µ÷Õû£¨working-set tuning£©Ö¸µÄÊÇÖØÐ°²ÅÅ¿ÉÖ´ÐÐÄ£¿éÖдúÂë²¼¾ÖµÄ¹ý³Ì£¬¸Ã¹ý³Ì½«µ÷ÓÃ×îÆµ·±µÄ´úÂë¿é¼¯Öе½Ä£¿éµÄ¿ªÊ¼Î»Öá£ÕâÑù×öµÄÄ¿µÄÊÇÑÓ³Ù¶Ô½ÏÉÙµ÷ÓôúÂëµÄ¼ÓÔØ£¬´Ó¶øÊ¹µÃʹÓÃ×îÆµ·±µÄ³ÌÐò²¿·Öͨ³£¶¼×¤ÁôÔÚÄÚ´æÖС£ËüµÄÓŵãÊǼ«´óµØ¼õÉÙÁËÄڴ濪Ïú£¬²¢ÇÒÌá¸ßÁ˳ÌÐòµÄÆô¶¯ËÙ¶È¡£¹¤×÷¼¯µ÷Õû²»½ö¿ÉÒÔÓ¦ÓÃÓÚ³ÌÐò£¬Ò²¿ÉÒÔÓ¦ÓÃÓÚ²Ù×÷ϵͳ¡£
A.4.1 º¯Êý¼¶µÄ¹¤×÷¼¯µ÷Õû
³£ÓõŤ×÷¼¯µ÷ÕûÊÇ»ùÓÚº¯Êý¼¶ÖØÐÂ×éÖ¯µÄµ÷Õû¡£µ±³ÌÐòÆô¶¯ºó£¬¹¤×÷¼¯µ÷ÕûÆ÷³ÌÐò£¨working-set tuner program£©»á¿¼²ìÄÄЩº¯ÊýʹÓõÃ×îÆµ·±£¬È»ºóËü¸ù¾ÝÕâЩÐÅÏ¢ÖØÐÂ×é
Ö¯¸÷¸öº¯ÊýÔÚ¶þ½øÖÆÎļþÖеÄ˳Ðò£¬ÒÔ±£Ö¤×î³£Óõĺ¯Êý±»·ÅÔÚÄ£¿éµÄ×îÇ°Ãæ£¬¶ø²»³£Óõĺ¯Êý±»·ÅÔÚÄ£¿éµÄĩβ´¦¡£ÕâÑù£¬²Ù×÷ϵͳ¾Í¿ÉÒÔ°Ñ×î³£ÓõĴúÂë¿éÒ»Ö±¡°Áô¡±ÔÚÄÚ´æÖУ¬¶øÄ£¿éµÄÆäÓಿ·ÖÖ»ÔÚÐèÒªµÄʱºò²Å»á±»¼ÓÔØµ½ÄÚ´æÖУ¨È»ºóÔÚ²»ÔÙÐèÒªµÄʱºò¾ÍÁ¢¼´°ÑËüÇå³ý³öÄڴ棩¡£
ÔÚÄæÏò¹ý³ÌÖÐÓöµ½µÄ´ó¶àÊýÇé¿öÏ£¬º¯Êý¼¶µÄ¹¤×÷¼¯µ÷Õû²»»á¶ÔÄæÏò¹ý³ÌÔì³ÉÈκÎÓ°Ï죬ËüÖ»»áΪÎÒÃÇÌṩһ¸öÓйسÌÐòµÄС°µÊ¾£ºÒ»¸öº¯ÊýµÄµØÖ·Ïà¶ÔÓÚÄ£¿é¿ªÊ¼´¦µÄ¾àÀ루¿¿½ü³Ì¶È£©±íÃ÷ÁËÕâ¸öº¯ÊýµÄʹÓÃÆµ¶È¡£º¯ÊýÔ½¿¿½üÄ£¿éµÄÆðʼλÖã¬ËüʹÓÃµÄÆµ¶È¾ÍÔ½¸ß¡£ÄÇЩ·ÅÔÚÄ£¿é½áβ´¦£¨¼´·ÅÔڸߵØÖ·Î»µÄº¯Êý£©µÄº¯Êý¾ÍºÜÉÙ±»µ÷Ó㬶øÇÒ£¬ÕâЩº¯ÊýºÜ¿ÉÄÜÔÚ³öÏÖ²»Õý³£µÄÇé¿ö²Å»áÓõ½¹¦ÄÜ£¬±ÈÈç³ÌÐò³ö´í¡£Í¼A.13ͨ¹ýͼƬ½âÊÍÁËÕâ¸ö¸ÅÄî¡£
A.4.2 ´úÂë¼¶µÄ¹¤×÷¼¯µ÷Õû
´úÂë¼¶µÄ¹¤×÷¼¯µ÷ÕûÊǸü¸ß¼¶µÄ¹¤×÷¼¯µ÷ÕûÐÎʽ£¬Í¨³£ÐèÒª±àÒëÆ÷ÏÔʽ֧³Ö£¨explicit support£©¸Ã¹¦ÄܲſÉÒÔ¡£´úÂë¼¶¹¤×÷¼¯µ÷ÕûµÄ»ù±¾Ïë·¨ÊÇ£ºµ÷Õû¹ý³ÌÖн«Ìõ¼þ´úÂëµ÷Õûµ½ÊýÖУ¨¶ø²»ÊǶÀÁ¢µÄº¯°´ÕÕº¯ÊýµÄʹÓÃ×´¿ö½øÐе÷Õû£©£¬ÕâÑù¾Í¿ÉÒÔʵÏֱȺ¯Êý¼¶µ÷Õû¸ü¼Ó¸ßЧµÄ³ÌÐò¡£¹¤×÷¼¯µ÷ÕûÆ÷³ÌÐò»áͳ¼Æ³ÌÐòÖÐÿ¸öÌõ¼þµÄʹÓÃÇé¿ö£¬²¢¾Ý´ËÖØÐÂÅÅÁÐÌõ¼þ´úÂë¿éÔÚ¶þ½øÖÆÄ£¿éÖеÄλÖá£
¶ÔÓÚÄæÏò¹¤³ÌÈËÔ±À´Ëµ£¬´úÂë¼¶¹¤×÷¼¯µ÷ÕûΪËûÃÇÌṩÁËij¸öÌõ¼þ´úÂë¿éÔÚÕý³£ÔËÐÐʱ»á±»Ö´Ðе½µÄ¿ÉÄÜÐÔ¡£È»¶ø£¬ÕâÖÖµ÷Õû·½·¨´øÀ´µÄÖ÷ÒªÎÊÌâÊÇÎÞ·¨ÔÚ¶þ½øÖÆÄ£¿éÖп´µ½ÍêÕûµÄº¯Êý£¨±»·Ö³ÉÁ˺ܶà¿é£©¡£ÒòΪ¶Ô´úÂë¿éµÄÒÆ¶¯ÒѾ³¬³öÁËËüÃÇËùÊôº¯ÊýµÄ±ß½ç£¬¶ÔÕâÑùµÄ´úÂë½øÐÐÄæÏò±íÏÖ³öÀ´Ò»Ð©Ææ¹ÖµÄÏÖÏó¡£ÒªÒýÆð×¢ÒâµÄÊÇ£¬º¯Êý¶¼±»·Ö½â³É¶à¸ö´úÂë¿é²¢·ÖÉ¢ÔÚÕû¸öÄ£¿éÖУ¬µ±Äã¿´µ½Ò»¸ö¶ÀÁ¢µÄ´úÂëÆ¬¶Ïʱ£¬ºÜÄÑÈ·¶¨ËüÊÇ·ÅÔÚÄ£¿éÁíÒ»¶ËµÄij¸öº¯ÊýµÄÒ»²¿·Ö£»ÔÚÕâ¶Î´úÂëµÄǰ±ßºÍºó±ßµÄƬ¶Ï¶¼ºÍËüûÓÐÈκεĹØÁª¡£ÓÐÒ»¸ö±æÊ¶ÕâÖÖÏ໥¶ÀÁ¢µÄ´úÂëÆ¬¶ÏÖ®¼äÁªÏµµÄ¼¼ÇÉÄã¿ÉÄÜ»áÓõõ½£¬¾ÍÊǹ۲ì´úÂëÆ¬¶ÎĩβµÄÎÞÌõ¼þJMPÖ¸Áͨ³£Õâ¸ö¶ÀÁ¢µÄ´úÂëÆ¬¶Ï»áÌø»ØÆäËùÊôº¯ÊýµÄº¯ÊýÌ壬´Ó¶ø±©Â¶³öº¯ÊýµÄλÖá£ÔÚÆäËûµÄÇé¿öÏ£¬¶ÀÁ¢µÄ´úÂëÆ¬¶ÏÖ±½Ó·µ»Ø£¨return£©£¬ÕâÑùÎÒÃǾÍÎÞ·¨¸ãÇå³þËüµÄº¯ÊýÖ÷ÌåÁË¡£Í¼A.14ͨ¹ýͼƬ½âÊÍÁË´úÂë¼¶¹¤×÷¼¯µ÷Õû¶Ô´úÂëÔÚ¶þ½øÖÆ¿ÉÖ´ÐÐÎļþÖв¼ÖõÄÓ°Ïì¡£

ͼA.13 º¯Êý¼¶µÄ¹¤×÷¼¯µ÷Õû¶Ô¶þ½øÖÆ¿ÉÖ´ÐÐÎļþÖдúÂëµÄÓ°Ïì

ͼA.14 ´úÂë¼¶µÄ¹¤×÷¼¯µ÷Õû¶Ôͬһ¸ö¶þ½øÖÆ¿ÉÖ´ÐÐÎļþÖдúÂëµÄÓ°Ïì






