ÔõÑùÓÅ»¯PentiumϵÁд¦ÀíÆ÷µÄ´úÂë
Copyright © 1996, 2000 by Agner Fog. Last modified 2000-07-03.
·½±ãÃæ (fangbianmian) Òë 86.7%
ÔÆ·ç (Cloud Wu) Òë http://www.codingnow.com/ 13.3%
Ŀ¼
1.
¼ò½é
Õâ±¾ÊÖ²áϸÖµÄÃèÊöÁËÔõÑùд³ö¸ß¶ÈÓÅ»¯µÄ»ã±à´úÂ룬×ÅÖØÓÚ½²½âPentiumϵÁеÄ΢´¦ÀíÆ÷¡£
Õâ¶ùËùÓеÄÐÅÏ¢¶¼»ùÓÚÎÒµÄÑо¿¡£ ºÜ¶àÈËΪÕâ±¾ÊÖ²áÌṩÁËÓÐÓõÄÐÅÏ¢ºÍ´íÎó½ÃÕý£¬ ¶øÎÒÔÚ»ñµÃÈκÎеÄÖØÒªÐÅÏ¢ºó¶¼¸üÐÂËü¡£ Òò´ËÕâ±¾ÊÖ²á±ÈÆäËüÀàËÆµÄÐÅÏ¢À´Ô´¶¼¸ü׼ȷ£¬Ï꾡£¬¾«È·ºÍ±ãÓÚÀí½â£¬ ¶øÇÒËü»¹°üº¬ÁËÐí¶àÆäËüµØ·½ÕÒ²»µ½µÄϸ½ÚÃèÊö¡£ ÕâЩÐÅϢʹÄãÄܹ»ÓöàÖÖ·½·¨¾«È·Í³¼ÆÒ»Ð¡¶Î´úÂ뻨µôµÄʱÖÓÖÜÆÚÊý¡£ µ«ÊÇ£¬ÎÒ²»Äܱ£Ö¤ÊÖ²áÀïËùÓеÄÐÅÏ¢¶¼ÊǾ«È·µÄ: һЩʱ¼ä²âÊÔµÈÊǺÜÄÑ»òÕß²»¿ÉÄܾ«È·²âÁ¿µÄ£¬ ÎÒ¿´²»µ½ Intel ÊÖ²á×÷ÕßÓµÓеÄÄÚ²¿¼¼ÊõÎĵµ×ÊÁÏ¡£
Õâ±¾ÊÖ²áÌÖÂÛÁË Pentium ´¦ÀíÆ÷µÄÏÂÁа汾:
| Ëõд | Ãû×Ö |
| PPlain | plain ÀÏʽ Pentium (ûÓÐ MMX) |
| PMMX | ÓÐMMXµÄPentium |
| PPro | Pentium Pro |
| PII | Pentium II (°üÀ¨ Celeron ºÍ Xeon) |
| PIII | Pentium III (°üÀ¨Ò»Ð©Ï൱µÄCPU) |
Õâ±¾ÊÖ²áÖÐʹÓÃÁËMASM 5.10µÄ»ã±àÓï·¨¡£ X86 »ã±àÓïÑÔûÓÐʲô¹Ù·½±ê×¼£¬ µ«MASM 5.10µÄ»ã±àÓï·¨×î½Ó½üÊÂʵÉϵıê×¼¡£ ÒòΪ¼¸ºõËùÓеĻã±àÆ÷¶¼ÓÐ MASM 5.10 ¼æÈÝģʽ (È»¶øÎÒ²»ÍƼöʹÓÃMASMµÄ5.10°æ±¾£¬ÒòΪËüÔÚ 32 λģʽÏÂÓÐÑÏÖØµÄ Bug¡£×îºÃÊÇʹÓà TASM »òÕß MASM µÄºóÐø°æ±¾)¡£
ÊÖ²áÀïµÄһЩÆÀÂÛºÃÏóÊǶÔIntelµÄÅúÆÀ¡£ µ«Õâ²¢²»ÊÇ˵ÆäËüµÄ²úÆ·»áºÃһЩ¡£ ÓëÖÚ¶àÓëÖ®¾ºÕùµÄÉÌÆ·Ïà±È£¬PentiumϵÁеÄ΢´¦ÀíÆ÷ÊÇÊôÓڱȽϺõģ¬ËüÓиüºÃµÄÎĵµ£¬ºÍ¸ü¶à¿É²âÊÔµÄÌØÐÔ¡£ÓÉÓÚÕâЩÔÒò£¬²»»áÓÐÎÒ»òÕ߯äËûÈË×öͬÀàÉÌÆ·µÄ±È½Ï²âÊÔ¡£
»ã±àÓïÑÔ±à³Ì±ÈÓø߼¶ÓïÑÔÒª¸´ÔӵĶࡣ ÖÆÔì Bug ÊǺÜÈÝÒ׵쬵«ÊÇÕÒµ½ Bug È´ºÜÄÑ¡£ ÏÖÔÚÒѾÌáÐÑÄãÁË! ÎÒ¼Ù¶¨¶ÁÕßÒѾÓлã±à±à³ÌµÄ¾Ñé¡£ ûÓеϰ£¬ÇëÔÚ×ö¸´ÔÓµÄÓÅ»¯Ç°¶ÁһЩ»ã±àµÄÊé²¢ÇÒдЩ´úÂë»ñµÃЩ»ã±àµÄ¾Ñé¡£
PPlain ºÍ PMMX оƬµÄÓ²¼þÉè¼ÆÖÐÓÐÐí¶àÌØÐÔÊÇΪһЩ³£ÓÃÖ¸Áî»òÖ¸Áî¶Ô×÷רÃÅÓÅ»¯µÄ£¬¶ø²»ÊÇʹÓÃÄÇЩÆÕͨµÄÓÅ»¯·½·¨¡£ÒòΪÓÐÕâЩÉè¼Æ£¬ËùÒÔÓÅ»¯Èí¼þµÄ¹æÔòºÜ¸´ÔÓ£¬ÇÒÓкܶàµÄÀýÍ⣬µ«ÊÇÕâÑù×ö¿ÉÄÜ»ñµÃʵÖÊÐԵĺô¦¡£PPro£¬ PII ºÍ PIII ´¦ÀíÆ÷Óзdz£²»Í¬µÄÉè¼Æ£¬ËüÃÇ»áÀûÓÃÂÒÐòÖ´ÐÐÀ´×öÐí¶àµÄÓÅ»¯¹¤×÷£¬µ«ÊÇ´¦ÀíÆ÷µÄÕâЩ¸´ÔÓÉè¼Æ´øÀ´ÁËÐí¶àDZÔ򵀮¿¾±£¬Òò´ËΪÕâЩ´¦ÀíÆ÷½øÐÐÊÖ¹¤ÓÅ»¯½«µÃµ½Ðí¶àµÄºÃ´¦¡£Pentium 4 ´¦ÀíÆ÷Ò²ÓÃÁËÁíÍâÒ»ÖÖÉè¼Æ£¬±¼ÌÚ4 µÄÓÅ»¯Ö¸µ¼Â·ÏߺÍÇ°ÃæµÄ°æ±¾·Ç³£µÄ²»Í¬ÁË¡£Õâ¸öÊÖ²áûÓÐìüÀ¨±¼ÌÚ4 - ¶ÁÕßÇë×Ô¼º²éÔÄ Intel µÄÊֲᡣ
ÔÚ°ÑÄãµÄ´úÂëתΪ»ã±àµÄ֮ǰ£¬È·ÈÏÄãµÄËã·¨ÊÇ×ã¹»ÓÅ»¯µÄ¡£ ͨ³£Äã¿ÉÒÔͨ¹ýÓÅ»¯Ëã·¨À´½«´úÂëЧÂÊÌá¸ßµÄ±Èת³É»ã±à»ñµÃµÄЧÂʶàµÄ¶à¡£
µÚ¶þ£¬Äã±ØÐëÕÒµ½ÄãµÄ³ÌÐòÀï×î¹Ø¼üµÄ²¿·Ö¡£ ͨ³£ 99% µÄ CPU ʱ¼ä»¨ÔÚ³ÌÐò×îÀïÃæµÄÑ»·ÖС£ ÔÚÕâÖÖÇé¿öÏ£¬ÄãÖ»ÒªÓÅ»¯Õâ¸öÑ»·²¢°ÑÆäËüµÄËùÓж«Î÷¶¼Óø߼¶ÓïÑÔд¡£ һЩ»ã±à³ÌÐòÔ±½«´óÁ¿µÄ¾«Á¦»¨ÔÚÁËËûÃdzÌÐòµÄ´íÎóµÄ²¿·ÖÉÏ£¬ËûÃÇŬÁ¦µÃµ½µÄΨһ½á¹û¾ÍÊdzÌÐò±äµÄ¸ü¼ÓÄÑÒÔµ÷ÊÔºÍά»¤ÁË¡£
Èç¹ûÄãµÄ³ÌÐòµÄ¹Ø¼ü²¿·Ö²¢²»ÄÇôÃ÷ÏÔ£¬Äã¿ÉÒÔÓÃprofilÀ´ÕÒ¡£Èç¹û·¢ÏÖÆ¿¾±ÔÚ´ÅÅ̲Ù×÷£¬È»ºóÄã¾Í¿ÉÒÔÊÔ×ÅÐ޸ijÌÐòʹ´ÅÅ̲Ù×÷¼¯ÖÐÁ¬Ðø£¬Ìá¸ß´ÅÅÌ»º³åµÄÃüÖÐÂÊ£¬¶ø²»ÊÇÓûã±àÀ´Ð´´úÂë¡£ Èç¹ûÆ¿¾±ÔÚͼÏóÊä³ö£¬ÄÇôÄã¾Í¿ÉÒÔ³¢ÊÔÕÒµ½Ò»ÖÖ·½·¨À´¼õÉÙµ÷ÓÃͼÏóº¯ÊýµÄ´ÎÊý¡£
һЩ¸ß¼¶ÓïÑÔ±àÒëÆ÷¶ÔÓÚÖ¸¶¨µÄ´¦ÀíÆ÷ÌṩÁËÏà¶ÔºÃµÄÓÅ»¯£¬µ«ÊÇÉîÈëµÄÊÖ¹¤ÓÅ»¯½«×öµÄ¸üºÃ¡£
Çë²»Òª½«ÄãµÄ±à³ÌÎÊÌâ¼Ä¸øÎÒ¡£ÎÒ²»»á°ïÄã×ö¼ÒÍ¥×÷ÒµµÄ!
×£ÄãÔÚºóÃæµÄÔĶÁÖкÃÔË!
2. ÎÄÏ×
ÔÚ Intel µÄ www Õ¾ÉÏ£¬´òÓ¡µÄÎı¾»òÕß CD-ROM É϶¼ÓкܶàÓÐÓõÄÎÄÏ׺ÍÖ¸ÄÏ¡£ ½¨ÒéÄãÑо¿Ò»ÏÂÕâЩÎĵµÀ´¶Ô΢´¦ÀíÆ÷µÄ½á¹¹ÓÐЩÈÏʶ¡£ È»¶ø£¬Intel µÄÎĵµÒ²²»×ÜÊǶԵġª¡ªÓÈÆäÊÇÄÇЩָÄÏÓкܶà´íÎó(ÏÔÈ»£¬IntelµÄÄÇЩÈËûÓвâÊÔËûÃǵÄÀý×Ó)¡£
ÕâÀïÎÒ²»¸ø³ö URL£¬ÒòΪÎļþµÄλÖþ³£µÄ¸Ä±ä¡£ Äã¿ÉÒÔÀûÓà developer.intel.com »òÕßwww.agner.org/assem Á´½ÓÉϵÄËÑË÷¹¤¾ßÕÒµ½ÄãÒªµÄÎĵµ¡£
һЩÎĵµÊÇ.PDF¸ñʽµÄ¡£Èç¹ûÄãûÓÐÏÔʾ»òÕß´òÓ¡PDFµÄ¹¤¾ß£¬¿ÉÒÔÈ¥http://www.adobe.com/ÏÂÔØAcrobatÎļþÔĶÁÆ÷¡£
ʹÓà MMX ºÍ XMM (SIMD) Ö¸ÁîÓÅ»¯×¨ÃŵijÌÐòÔÚ¼¸±¾Ê¹ÓÃÊÖ²áÀï¶¼ÓÐÃèÊö¡£ ¸÷ÖÖÊÖ²áºÍ½Ì³Ì¶¼ÃèÊöÁËËüµÄÖ¸Á¡£
VTUNE ÊÇ Intel ÓÃÀ´ÓÅ»¯´úÂëµÄÈí¼þ¹¤¾ßÎÒûÓвâÊÔËü£¬Òò´ËÕâÀï²»ÓèÆÀ¼Û¡£
»¹ÓкܶàÕ¾µã±È Intel Óиü¶àµÄÓÐÓÃÐÅÏ¢¡£ ÔÚÐÂÎÅ×é comp.land.asm.x86 µÄ FAQ ÀïÁгöÁËÕâЩ×ÊÔ´¡£ÆäËüµÄ internet ÉϵÄ×ÊÔ´ÔÚ www.agner.org/assem
ÉÏÒ²ÓÐÁ´½Ó¡£
3.
Ôڸ߼¶ÓïÑÔÀïµ÷Óûã±àº¯Êý
Äã¿ÉÒÔʹÓÃÔÚÏß»ã±à»òÕßÓûã±àдÕû¸ö×Ó³ÌÐòÈ»ºóÔÙÁ¬½Óµ½ÄãµÄ¹¤³ÌÖС£ Èç¹ûÄãÑ¡ÔñºóÕߣ¬½¨ÒéÄãÑ¡Ôñ¿ÉÒÔ½«¸ß¼¶ÓïÑÔÖ±½Ó±àÒë³É»ã±àµÄ±àÒëÆ÷¡£ ÕâÑùÄã¿ÉÒԵõ½ÕýÈ·µÄº¯Êýµ÷ÓÃÔÐÍ¡£ ËùÓÐµÄ C++ ±àÒëÆ÷¶¼ÄÜ×öÕâ¸ö¹¤×÷¡£
´«µÝ²ÎÊýµÄ·½·¨È¡¾öÓÚµ÷ÓÃÐÎʽ:
| µ÷Ó÷½Ê½ | ²ÎÊýÔÚ¶ÑÕ»ÀïµÄ´ÎÐò | ²ÎÊýÓÉËÀ´ÒÆÈ¥ |
| _cdecl | µÚÒ»¸ö²ÎÊýÔÚµÍλµØÖ· | µ÷ÓÃÕß |
| _stdcall | µÚÒ»¸ö²ÎÊýÔÚµÍλµØÖ· | ×Ó³ÌÐò |
| _fastcall | ±àÒëÆ÷Ö¸¶¨ | ×Ó³ÌÐò |
| _pascal | µÚÒ»¸ö²ÎÊýÔÚ¸ßλµØÖ· | ×Ó³ÌÐò |
º¯Êýµ÷ÓÃÔÐͺͱ»±àÒëÆ÷ÃüÃûµÄº¯ÊýÃû¿ÉÄܷdz£µÄ¸´ÔÓ¡£ Óкܶ಻ͬµÄµ÷ÓÃת»»¹æÔò£¬ ²»Í¬µÄ±àÒëÆ÷Ò²»¥²»¼æÈÝ¡£ Èç¹ûÄã´ÓC++Àïµ÷Óûã±àÓïÑÔµÄ×Ó³ÌÐò£¬×îºÃµÄ·½·¨Êǽ«ÄãµÄº¯ÊýÓà extern "C" ºÍ _cdecl ¶¨ÒåÀ´×öµ½¼æÈÝÐÔºÍÒ»ÖÂÐÔ¡£ »ã±à´úÂëµÄº¯ÊýÃûÇ°Ãæ±ØÐë´øÒ»¸öÏ»®Ïß (_) ²¢ÇÒÔÚÍâÃæ±àÒëʱ¼ÓÉÏ´óСдÃô¸ÐµÄÑ¡Ïî (Ñ¡Ïî -mx)¡£ ÀýÈç:
; extern "C" int _cdecl square (int x);
_square PROC NEAR ; ÕûÐÍÆ½·½º¯Êý
PUBLIC _square
MOV EAX£¬ [ESP+4]
IMUL EAX
RET
_square ENDP
Èç¹ûÄãÐèÒªÖØÔØº¯Êý£¬ÖØÔزÙ×÷·û£¬·½·¨£¬ºÍÆäËü C++ רÓеĶ«Î÷£¬¾Í±ØÐëÏÈÓà C++ дºÃ´úÂëÔÙÓñàÒëÆ÷±àÒë³É»ã±à´úÂëÒÔ»ñµÃÕýÈ·µÄÁ¬½ÓÐÅÏ¢ºÍµ÷ÓÃÔÐÍ¡£ÕâЩϸ½ÚËæ×űàÒëÆ÷µÄ²»Í¬¶ø²»Í¬¶øÇÒºÜÉÙÁгöÎĵµ¡£ Èç¹ûÄãÏ£Íû»ã±àº¯ÊýÓÃÆäËüµÄµ÷ÓÃÔÐͶø²»ÊÇ extern "C" ¼° _cdecl£¬ÓÖ¿ÉÒÔ±»²»Í¬µÄ±àÒëÆ÷µ÷Óã¬ÄÇôÄãÐèҪΪÿ¸ö±àÒëÆ÷дһ¸öÃû×Ö¡£ ÀýÈçÖØÔØÒ»¸ö square º¯Êý:
; int square (int x);
SQUARE_I PROC NEAR ; ÕûÐÍÆ½·½º¯Êý
@square$qi LABEL NEAR ; Borland ±àÒëÆ÷µÄÁ¬½ÓÃû×Ö
?square@@YAHH@Z LABEL NEAR ; Microsoft ±àÒëÆ÷µÄÁ¬½ÓÃû×Ö
_square__Fi LABEL NEAR ; Gnu ±àÒëÆ÷µÄÁ¬½ÓÃû×Ö
PUBLIC @square$qi£¬ ?square@@YAHH@Z£¬ _square__Fi
MOV EAX£¬ [ESP+4]
IMUL EAX
RET
SQUARE_I ENDP
; double square (double x);
SQUARE_D PROC NEAR ; Ë«¾«¶È¸¡µãƽ·½º¯Êý
@square$qd LABEL NEAR ; Borland ±àÒëÆ÷µÄÁ¬½ÓÃû×Ö
?square@@YANN@Z LABEL NEAR ; Microsoft ±àÒëÆ÷µÄÁ¬½ÓÃû×Ö
_square__Fd LABEL NEAR ; Gnu ±àÒëÆ÷µÄÁ¬½ÓÃû×Ö
PUBLIC @square$qd£¬ ?square@@YANN@Z£¬ _square__Fd
FLD QWORD PTR [ESP+4]
FMUL ST(0)£¬ ST(0)
RET
SQUARE_D ENDP
Õâ¸ö·½·¨Äܹ»¹¤×÷ÊÇÒòΪËùÓÐÕâЩ±àÒëÆ÷¶ÔÖØÔØµÄº¯Êý¶¼È±Ê¡Ê¹ÓÃ_cdecl µ÷ÓᣠȻ¶ø¶ÔÓÚ²»Í¬µÄ±àÒëÆ÷£¬ÉõÖÁ¶Ô·½·¨(³ÉÔ±º¯Êý)µÄµ÷Ó÷½Ê½¶¼²»Ò»Ñù (Borland ºÍ Gnu ±àÒëÆ÷ʹÓà _cdecl ·½Ê½£¬'this' Ö¸ÕëÊǵÚÒ»¸ö²ÎÊý£»¶ø Microsoft ʹÓà _stdcall ·½Ê½£¬'this' Ö¸Õë·ÅÔÚ ecx Àï)¡£
ͨ³£À´Ëµ£¬µ±ÄãʹÓÃÁËÏÂÁж«Î÷ʱ£¬²»ÒªÖ¸Íû²»Í¬µÄ±àÒëÆ÷ÔÚÄ¿±êÎļþ¼¶±ð¿ÉÒÔ¼æÈÝ: long double£¬³ÉÔ±Ö¸Õ룬Ðé»úÖÆ£¬new£¬delete£¬Òì³££¬ÏµÍ³º¯Êýµ÷Óã¬ÒÔ¼°±ê×¼¿âº¯Êý¡£
16 λģʽDOS»òWindows£¬ C/C++ µÄ¼Ä´æÆ÷ʹÓÃ:
AXÊÇ16λ·µ»ØÖµ£¬DX:AXÊÇ32 λ·µ»ØÖµ£¬ST(0)ÊǸ¡µã·µ»ØÖµ¡£¼Ä´æÆ÷ AX£¬ BX£¬ CX£¬ DX£¬ ES ºÍËãÊõ±êÖ¾¿ÉÒÔ±»¹ý³Ì¸Ä±ä; ÆäËüµÄ¼Ä´æÆ÷±ØÐë±£´æºÍ»Ö¸´¡£ Ò»¸ö¹ý³ÌÒª²»¸Ä±äSI£¬ DI£¬ BP£¬ DS ºÍ SS µÄǰÌáÏ²Ų»»áÓ°ÏìÁíÒ»¸ö¹ý³Ì¡£
32λģʽWindows£¬ C++ ºÍÆäËü±à³ÌÓïÑÔϵļĴæÆ÷ʹÓÃ:
ÕûÐÍ·µ»ØÖµ·ÅÔÚ EAX£¬ ¸¡µã·µ»ØÖµ·ÅÔÚ ST(0)¡£ ¼Ä´æÆ÷ EAX£¬ ECX£¬ EDX (ûÓÐ EBX) ¿ÉÒÔ±»¹ý³ÌÐÞ¸Ä; ÆäËüµÄ¼Ä´æÆ÷±ØÐë±£ÁôºÍ»Ö¸´¡£¶Î¼Ä´æÆ÷²»Äܱ»¸Ä±ä£¬ÉõÖÁ²»Äܱ»ÁÙʱ¸Ä±ä¡£ CS£¬ DS£¬ ES ºÍ SS ¶¼Ö¸Ïòƽ̹ģʽµÄ¶Î¡£ FS ±»²Ù×÷ϵͳʹÓ㬠GS ûÓÐʹÓ㬵«ÊDZ»±£Áô¡£ ±ê¼Çλ¿ÉÒÔÔÚÏÂÃæµÄÏÞÖÆÏ±»¹ý³Ì¸Ä±ä: ·½Ïò±ê־ȱʡÊÇ0¡£·½Ïò±êÖ¾¿ÉÒÔÔÝʱµÄÐ޸ģ¬ µ«ÊDZØÐëÔÚÈκεĵ÷ÓûòÕß·µ»ØÇ°Çå³ý¡£ÖжϱêÖ¾²»Äܱ»Çå³ý¡£ ¸¡µã¼Ä´æÆ÷¶ÑÕ»ÔÚ¹ý³ÌÈë¿Ú´¦Êǿյ쬷µ»ØÊ±Ò²Ó¦¸ÃÊǿյ쬳ýÁË ST(0) ±»ÓÃÓÚ·µ»ØÖµµÄÇé¿ö¡£ MMX ¼Ä´æÆ÷¿ÉÒÔ±»¸Ä±äµ«ÊÇÔÚ·µ»ØÇ°»òÕßÔÚµ÷ÓÿÉÄÜʹÓø¡µãÔËËãµÄ¹ý³Ìǰ±ØÐëÓà EMMS Çåһϡ£ ËùÓÐµÄ XMM ¼Ä´æÆ÷¶¼¿ÉÒÔ±»¹ý³ÌÐ޸ġ£ ÔÚXMM ¼Ä´æÆ÷ÀïµÄ´«µÝ²ÎÊýºÍ·µ»ØÖµµÄÃèÊöÔÚ Intel µÄÓ¦ÓÃÎĵµ AP 589¡£ Ò»¸ö¹ý³Ì¿ÉÒÔÔÚ²»¸Ä±äEBX£¬ ESI£¬ EDI£¬ EBP ºÍËùÓеĶμĴæÆ÷µÄǰÌáϱ»ÁíÒ»¸ö¹ý³Ìµ÷Óá£
4. µ÷ÊÔºÍУÑé
ÕýÈçÄãÒѾ·¢Ïֵ쬵÷ÊÔ»ã±à´úÂë·Ç³£µÄÀ§ÄѺÍÈÝÒ×Êܵ½´ìÕÛ¡£ ÎÒ½¨ÒéÄãÏȰÑÄãÐèÒªÓÅ»¯µÄС¶Î´úÂëÓø߼¶ÓïÑÔд³ÉÒ»¸ö×Ó³ÌÐò¡£ È»ºóд¸öСµÄ²âÊÔ³ÌÐò¿ÉÒÔ³ä·Ö²âÊÔÄãµÄÕâ¸ö×Ó³ÌÐò¡£ È·ÈϲâÊÔ³ÌÐò¿ÉÒÔ²âÊÔµ½ËùÓеķÖÖ§ºÍ±ß½çÌõ¼þ¡£
µ±¸ß¼¶ÓïÑÔµÄ×Ó³ÌÐò¿ÉÒÔ¹¤×÷ÁË£¬ÄãÔÙ°ÑËü·Òë³É»ã±à´úÂë¡£
ÏÖÔÚÄã¿ÉÒÔ¿ªÊ¼ÓÅ»¯ÁË¡£ ÿ´ÎÄã×öÁ˵ãÐ޸ͼӦ¸ÃÔËÐвâÊÔ³ÌÐò¿´¿´Äܲ»ÄÜÕýÈ·¹¤×÷¡£ ½«ÄãËùÓеİ汾¶¼±êÉϺŲ¢±£´æÆðÀ´£¬ÕâÑùÔÚ·¢ÏÖ²âÊÔ³ÌÐò¼ì²é²»µ½µÄ´íÎó (±ÈÈçдµ½´íÎóµÄµØÖ·)ʱ¿ÉÒÔ»ØÍ·À´ÖØÐ²âÊÔ¡£
ÓõÚ30ÕÂÀïÌáµ½µÄËùÓз½·¨»òÕßÓòâÊÔ³ÌÐò²âÊÔ×îÄãµÄ³ÌÐòÖÐ×î¹Ø¼üµÄ²¿·Ö¡£ Èç¹û´úÂë±ÈÄãÆÚÍûµÄËÙ¶ÈÂýµÄÌ«¶à£¬×î¿ÉÄܵÄÔÒòÊÇ: cache ʧЧ (µÚ7ÕÂ)£¬Î´¶ÔÆë²Ù×÷(µÚ6ÕÂ)£¬µÚÒ»´ÎÔËÐÐÏûºÄ(µÚ8ÕÂ)£¬·ÖÖ§Ô¤²âʧ°Ü(µÚ22ÕÂ) £¬È¡Ö¸ÁîÎÊÌâ(µÚ15ÕÂ)£¬¼Ä´æÆ÷¶ÁÑÓ³Ù(µÚ16ÕÂ)£¬»òÕßÊǹý³¤µÄÒÀÀµ»·(µÚ20ÕÂ)¡£
¸ß¶ÈÓÅ»¯µÄ´úÂ뽫±äµÃ¶ÔÆäËûÈ˷dz£ÄѶÁ¶®£¬ÉõÖÁ¶ÔÄãÈÕºóÔÙ¶ÁÒ²ÓÐÀ§ÄÑ¡£ ΪÁËʹά»¤´úÂë±äΪ¿ÉÄÜ£¬½«´úÂë×é֯Ϊһ¸ö¸öСµÄÂß¼¶Î(¹ý³Ì»òÕߺê)ÇÒÿ¶Î¶¼¾ßÓкõĽӿںÍÇå³þµØ×¢Ê;ͷdz£ÖØÒª¡£ ´úÂëÔ½¸´ÔÓ¼èɬ£¬Ð´ÏºõÄÎĵµ¾ÍÔ½ÖØÒª¡£
5. ÄÚ´æÄ£Ê½
Pentium Ö÷ҪΪ 32 λ´úÂëÉè¼Æ£¬16λ´úÂëµÄÐÔÄܺܲ ½«ÄãµÄ´úÂëºÍÊý¾Ý·Ö¶ÎÒ²»áÃ÷ÏԵĽµµÍÐÔÄÜ£¬Òò´Ëͨ³£ÄãÓ¦µ±Ê¹ÓÃ32λƽ̹ģʽ£¬²¢ÇÒʹÓÃÖ§³ÖÕâÖÖģʽµÄ²Ù×÷ϵͳ¡£ Èç¹û²»Ìرð×¢Ã÷£¬Õâ±¾ÊÖ²áÀïËùÓеÄÀý×Ó¶¼Ê¹ÓÃ32λƽ̹ÄÚ´æÄ£Ê½¡£
6. ¶ÔÆë
ÄÚ´æÀïµÄËùÓÐÊý¾Ý¶¼±ØÐë°´ÕÕÏÂ±í½«µØÖ·¶ÔÆëµ½¿ÉÒÔ±» 2£¬4£¬8 »ò 16 Õû³ýµÄλÖãº
¶ÔÆë |
||
| ²Ù×÷Êý¾Ý³¤¶È | PPlain ¼° PMMX | PPro, PII ¼° PIII |
| 1 (byte) | 1 | 1 |
| 2 (word) | 2 | 2 |
| 4 (dword) | 4 | 4 |
| 6 (fword) | 4 | 8 |
| 8 (qword) | 8 | 8 |
| 10 (tbyte) | 8 | 16 |
| 16 (oword) | n.a. | 16 |
ÔÚ PPlain ºÍ PMMX ÉÏ£¬ÔÚ4×ֽڱ߽çÏß½»´íµÄʱºò£¬·ÃÎÊδ¶ÔÆëÊý¾Ý½«ÖÁÉÙÓÐ 3 ¸öʱÖÓÖÜÆÚµÄ¶îÍâÏûºÄ¡£ µ±cache±ß½çÏß±»½»´íµÄʱºòËðºÄ¸ü´ó¡£
ÔÚ PPro£¬PII ºÍ PIII ÉÏ£¬µ±cache±ß½çÏß½»´íʱ£¬Î´¶ÔÆëÊý¾Ý½«ÏûºÄµô 6-12 ¸öʱÖÓÖÜÆÚ¡£ ³ß´çСÓÚ 16 ×Ö½ÚµÄδ¶ÔÆë²Ù×÷Êý£¬Ã»ÓÐÔÚ 32 ×ֽڱ߽çÉϽ»´íʱ½«Ã»ÓжîÍâµÄËðºÄ¡£
ÔÚ dword ¶ÑÕ»ÉÏÒÔ 8 »ò 16 ¶ÔÆëÊý¾Ý¿ÉÄÜ»áÓÐÎÊÌâ¡£³£Óõķ½·¨ÊÇÉèÖÃ¶ÔÆëµÄ½á¹¹Ö¸Õë¡£¶ÔÆë±¾µØÊý¾ÝµÄº¯Êý¿ÉÒÔÊÇÕâÑù£º
_FuncWithAlign PROC NEAR
PUSH EBP ; Ç°Ðø´úÂë
MOV EBP£¬ ESP
AND EBP£¬ -8 ; ÒÔ 8 À´¶ÔÆëÖ¡Ö¸Õë
FLD DWORD PTR [ESP+8] ; º¯Êý²ÎÊý
SUB ESP£¬ LocalSpace + 4 ; ·ÖÅä±¾µØ¿Õ¼ä
FSTP QWORD PTR [EBP-LocalSpace] ; ÔÚ¶ÔÆëÁ˵Ŀռ䱣´æÒ»Ð©¶«Î÷
¡£¡£¡£
ADD ESP£¬ LocalSpace + 4 ; ½áÊø´úÂë¡£ »Ö¸´ ESP
POP EBP ; (PPlain/PMMX ÉÏÓÐ AGI ÑÓ³Ù)
RET
_FuncWithAlign ENDP
ËäÈ»¶ÔÆëÊý¾ÝÓÀÔ¶ÊÇÖØÒªµÄ£¬µ«ÊÇÔÚ PPlain ºÍ PMMX ÉÏ¶ÔÆë´úÂëȴûÓбØÒª¡£ PPro£¬PII ¼° PIII ÉÏ¶ÔÆë´úÂëµÄÔÔòÔÚµÚ15Õ²ûÊö¡£
7. Cache
PPlainºÍPPro´øÓÐÆ¬ÄÚcache(Ò»¼¶cache)ÆäÖÐ8kb ´úÂëcache£¬8kb Êý¾Ýcache¡£ PMMX£¬PII ºÍ PIII ÔòÓÐ 16 kb ´úÂëcache ºÍ 16 kb Êý¾Ý cache¡£ Ò»¼¶ cache ÀïµÄÊý¾Ý¿ÉÒÔÔÚ1¸öʱÖÓÖÜÆÚÄÚ¶Áд£¬cache δÃüÖÐʱ½«ËðʧºÜ¶àʱÖÓÖÜÆÚ¡£ Àí½â cache ÊÇÔõÑù¹¤×÷µÄ·Ç³£ÖØÒª£¬ÕâÑù²ÅÄܸüÓÐЧµÄʹÓÃËü¡£
Êý¾Ýcache ÓÉ 256 »ò 512 ÐÐ×é³É£¬Ã¿ÐÐ 32 ×Ö½Ú¡£ ÿ´ÎÄã¶ÁÊý¾ÝδÃüÖУ¬´¦ÀíÆ÷½«´ÓÄÚ´æ¶Á³öÒ»ÕûÌõ cache ÐС£ cache ÐÐ×ÜÊÇÔÚÎïÀíµØÖ·µÄ 32 ×Ö½Ú¶ÔÆë¡£ µ±Äã´ÓÒ»¸ö¿ÉÒÔ±» 32 Õû³ýµÄµØÖ·¶Á³öÒ»¸ö×Ö½Ú£¬ Ï 31 ×ֽڵĶÁд¾Í²»»áÓжàÓàµÄÏûºÄ¡£ Òò´ËÔÚÄÚ´æÖУ¬Äã¿ÉÒÔ°ÑÏà¹ØÊý¾ÝÏî·ÅÔÚ¶ÔÆëµÄ32×Ö½Ú¿éÀ¼¯ÖзÃÎÊ£©À´»ñµÃºÃ´¦¡£ ÀýÈ磬Èç¹ûÄãÓÐÒ»¸öÑ»·Òª²Ù×÷Á½¸öÊý×飬Äã¾Í¿ÉÒÔ½«Á½¸öÊý×é´©²å³ÉÒ»¸ö½á¹¹Êý×飬 ÈÃÒ»ÆðʹÓõÄÊý¾ÝµÄÎïÀíλÖÃÒ²ÔÚÒ»Æð¡£
Èç¹ûÊý×é»òÕ߯äËüÊý¾Ý½á¹¹µÄ³ß´çÊÇ 32 ×ֽڵı¶Êý£¬Äã×îºÃ½«Æä°´ 32 ×Ö½Ú¶ÔÆë¡£
cache ÊÇ×éÏàÁªÓ³ÏñµÄ¡£ Õâ¾ÍÊÇ˵һ¸öcache Ðв»ÄÜËæÐÄËùÓûµØÖ¸ÏòÈÎÒâÄÚ´æµØÖ·¡£ ÿ¸ö cache ÐÐÓÐÒ»¸ö 7-bit µÄ×éÖµ£¬ËüÆ¥ÅäÎïÀíµØÖ·µÄ 5 µ½ 11 λ ( 0-4 λָ¶¨32×Ö½ÚcacheÐеÄÐÐÄÚµØÖ·)¡£ PPlain ºÍ PPro ¿ÉÒÔÓÐ 2 Ìõ cache ÐжÔÓ¦ 128 ¸ö×éÖµÖеÄÒ»¸öÖµ£¨¼´Ã¿×é 2 ÐУ©£¬Òò´Ë¶ÔÈκÎRAMµØÖ·£¬¿ÉÄÜÓÐÁ½Ìõ cache ÐÐÖ¸ÏòËü¡£ PMMX£¬PII ºÍ PIII ÔòÊÇ 4 Ìõ¡£
Æä½á¹ûÊÇ cache ±£´æµÄµØÖ· 5-11 λÏàͬ£¨¼´¾ßÓÐÏàͬ×éÖµ£©µÄ²»Í¬Êý¾Ý¿éµÄÊýÄ¿²»Äܳ¬¹ý 2 ¸ö£¨PPlain ºÍ PPro£©»ò 4 ¸ö£¨PMMX£¬ PII ºÍ PIII£©¡£ Äã¿ÉÒÔÓÃÒÔÏ·½·¨¼ì²âÁ½¸öµØÖ·ÊÇ·ñÓÐÏàͬµÄ×éÖµ£º½ØµôµØÖ·µÄµÍ 5 λµÃµ½¿ÉÒÔ±» 32 Õû³ýµÄ¡°½Ø¶ÏµØÖ·¡±£¨¼´Áî µÍ5λ=0£©¡£ Èç¹ûÁ½¸ö½Ø¶ÏµØÖ·Ö®²îÊÇ 4096 (=1000H) µÄ±¶Êý£¬ ÕâÁ½¸öµØÖ·¾ÍÓÐÏàͬµÄ×éÖµ¡£
ÈÃÎÒÓÃÏÂÃæµÄһС¶Î´úÂëÀ´ËµÃ÷һϣ¬ ÕâÀï ESI ·ÅÖÃÁËÒ»¸ö¿ÉÒÔ±» 32 Õû³ýµÄµØÖ·:
AGAIN: MOV EAX£¬ [ESI]
¡¡¡¡¡¡¡¡MOV EBX£¬ [ESI + 13*4096 + 4]
¡¡¡¡¡¡¡¡MOV ECX£¬ [ESI + 20*4096 + 28]
¡¡¡¡¡¡¡¡DEC EDX¡¡
¡¡¡¡¡¡¡¡JNZ AGAIN
Õâ3¸öµØÖ·¶¼ÓÐÏàͬµÄ×éÖµ£¬ ÒòΪ½Ø¶ÏµØÖ·µÄ²î¶¼ÊÇ 4096 µÄ±¶Êý¡£ Õâ¸öÑ»·ÔÚ PPlain ºÍ PPro ÉϽ«ÔËÐеÄÏ൱Âý¡£ µ±Äã¶Á ECX µÄʱºò£¬ ûÓпÕÏÐµÄ cache ÐÐÓÐÏëÒªµÄ×éÖµ£¬ Òò´Ë´¦ÀíÆ÷ÓÃ×î½ü×îÉÙʹÓÃËã·¨Ìæ»»µÄÁ½¸öcache ÐÐÖеÄÒ»¸ö£¬ Õâ¾ÍÊÇ EAX ʹÓõÄÄǸö¡£ È»ºó´Ó [ESI+20*4096] µ½ [ESI+20*4096+31] ¶Á³öÊý¾ÝÀ´Ìî³ä¸ÃcacheÐв¢Íê³ÉдECXµÄ²Ù×÷¡£ ÏÂÒ»´ÎÔÙ ¶ÁEAXʱ£¬ Ä㽫·¢ÏÖΪEAX±£´æÊý¾ÝµÄcacheÐÐÒѾ±»¶ªÆúÁË£¬ ËùÒÔÓÖÒªÌæ»»×î½ü×îÉÙʹÓÃµÄ cache ÐУ¬ ÄǾÍÊDZ£´æ EBX ÊýÖµµÄÄǸöÁË£¬Èç´Ëµßô¤... Õ⽫»á²úÉú´óÁ¿µÄ cache ʧЧ£¬ Õâ¸öÑ»·´ó¸Å¿ªÏú 60 ¸öʱÖÓÖÜÆÚ¡£ Èç¹ûµÚ3ÐиijÉ:
MOV ECX£¬ [ESI + 20*4096 + 32]
ÕâÑùÎÒÃǾͻáÔÚ 32 ×ֽڱ߽çÉϽ»´í£¬ Òò´ËºÍǰÁ½ÐеÄ×éÖµ²»Í¬ÁË¡£ ÕâÑùΪÕâÈý¸öµØÖ··Ö±ðÖ¸¶¨cacheÐоÍûÓÐʲôÎÊÌâÁË¡£ Õâ¸öÑ»·½ö½öÏûºÄ3¸öʱÖÓÖÜÆÚ(³ýÁ˵ÚÒ»´ÎÔËÐÐ) ¡ª¡ª Ò»¸öÏ൱´óµÄÌá¸ß£¡ Èç¸Õ²ÅÌáµ½µÄ£¬PMMX£¬ PII ºÍ PIII ÿ×éÓÐ 4 ·cacheÐУ¬Òò´ËÄã¿ÉÒÔÓÐ4¸öÏàͬ×éÖµµÄcacheÐÐ(һЩIntelÎĵµ´íÎóµÄ˵ PIIµÄcacheÊÇ2·)¡£
¼ì²âÄãµÄÊý¾ÝµØÖ·ÊÇ·ñÓÐÏàͬµÄ×éÖµ¿ÉÄܷdz£À§ÄÑ£¬ÓÈÆäÊÇËüÃÇ·ÖÉ¢ÔÚ²»Í¬µÄ¶ÎÀï¡£ Òª±ÜÃâÕâÖÖÎÊÌâµÄ×îºÃÄÜ×öµÄ¾ÍÊǽ«¹Ø¼ü²¿·ÖʹÓõÄËùÓÐÊý¾Ý¶¼·ÅÔÚÒ»¸ö²»³¬¹ýcache´óСµÄÁ¬ÐøÊý¾Ý¿éÀ»òÕß·ÅÔÚÁ½¸ö²»³¬¹ýcacheÒ»°ë´óСÁ¬ÐøÊý¾Ý¿é (ÀýÈçÒ»¸ö¾²Ì¬Êý¾Ý¿é£¬Ò»¸ö¶ÑÕ»Êý¾Ý¿é) ÕâÑùÄãµÄcacheÐоÍÒ»¶¨»á¸ßЧʹÓá£
Èç¹ûÄãµÄ´úÂëµÄ¹Ø¼ü²¿·ÖÒª²Ù×÷ºÜ´óµÄÊý¾Ý½á¹¹»òÕßËæ»úÊý¾ÝµØÖ·£¬Äã¿ÉÄÜ»áÏë±£´æËùÓг£ÓõıäÁ¿(¼ÆÊýÆ÷£¬Ö¸Õ룬¿ØÖƱäÁ¿µÈ) ÔÚÒ»¸öµ¥¶ÀµÄ×î´óΪ 4k µÄÁ¬Ðø¿éÀïÃæ£¬ ÕâÑùÄã¾ÍÓÐÒ»¸öÍêÕûµÄ¿ÕÏÐcacheÐм¯À´·ÃÎÊËæ»úÊý¾Ý¡£ ÒòΪÄãͨ³£×ÜÊÇÐèÒªÕ»¿Õ¼äÀ´Îª×Ó³ÌÐò±£´æ²ÎÊýºÍ·µ»ØµØÖ·£¬ ×îºÃµÄ×ö·¨ÊǸ´ÖÆËùÓеij£Óþ²Ì¬Êý¾Ýµ½¶ÑÕ»£¨°ÑËüÃǸ´ÖƳɶ¯Ì¬±äÁ¿£©£¬Èç¹ûËüÃDZ»¸Ä±ä£¬¾ÍÔڹؼüÑ»·ÍâÔÙ¸´ÖÆ»ØÈ¥¡£
¶ÁÒ»¸ö²»ÔÚÒ»¼¶»º´æÀïµÄÊý¾Ý½«µ¼Ö´Ӷþ¼¶»º´æ¶ÁÈëÕû¸öcacheÐУ¬Õâ´óÔ¼ÒªÏûºÄ 200ns (ÔÚ 100MHz ϵͳÉÏÊÇ 20 ʱÖÓÖÜÆÚ£¬ »òÊÇ 200MHz É쵀 40 ¸öÖÜÆÚ)£¬µ«ÊÇÄã×îÏÈÐèÒªµÄÊý¾Ý½«ÔÚ 50-100 nsºó×¼±¸ºÃ¡£ Èç¹ûÊý¾ÝÒ²²»ÔÚ¶þ¼¶»º´æ£¬Ä㽫»áÅöµ½ 200-300 ns µÄÑÓ³Ù¡£ Èç¹ûÊý¾ÝÔÚ DRAM Ò³±ß½ç½»´í£¬ÑÓ³Ùʱ¼ä»á¸ü³¤Ò»Ð©¡£ (4/8 MB £¬72Òý½ÅÄÚ´æÐ¾Æ¬µÄ DRAM Ò³´óСÊÇ 1Kb£¬16/32 Mb µÄÊÇ 2kb)¡£
µ±´ÓÄÚ´æ¶ÁÈë´ó¿éµÄÊý¾Ý£¬ ËÙ¶ÈÏÞÖÆÔÚÓÚÌî³ä cache ÐС£ ÓÐʱÄã¿ÉÒÔÒÔ·ÇÁ¬ÐøµÄ´ÎÐò¶ÁÈ¡Êý¾ÝÀ´Ìá¸ßËÙ¶È: ÔÚÄã¶ÁÍêÒ»¸öcacheÐÐ֮ǰ¾Í¿ªÊ¼¶ÁÏÂÒ»¸öcacheÐеĵÚÒ»¸öÊý¾Ý¡£ ÔÚPPlainºÍPMMXÉ϶ÁÖ÷´æ»ò¶þ¼¶cache£¬ÒÔ¼°ÔÚPPro£¬PII£¬PIIÉ϶Á¶þ¼¶cache£¬ÓÃÕâ¸ö·½·¨¿ÉÒÔÌá¸ß¶ÁÈëËÙ¶È20 - 40%¡£ Õâ¸ö·½·¨µÄ²»ÀûµØ·½ÔÚÓÚʹ³ÌÐò´úÂë±äµÄ·Ç³£µÄ±¿×¾ºÍÄÑÓÚÀí½â¡£ ¹ØÓÚÕâЩ¼¼Çɵĸü¶àÐÅÏ¢Çë²Î¿¼http://www.intelligentfirm.com/¡£
µ±ÄãдÏòÒ»¸ö²»ÔÚ Ò»¼¶cache µÄµØÖ·£¬ÔÚ PPlainºÍPMMXÉÏÕâ¸öÊýÖµ½«Ö±½Óдµ½ ¶þ¼¶cache »òÕßÊÇ RAM(ÕâÈ¡¾öÓÚ2¼¶cacheÈçºÎÉèÖÃ)¡£ Õâ´óÔ¼ÏûºÄ 100 ns¡£ Èç¹ûÄãÏòͬһ¸ö32×Ö½ÚµÄÄÚ´æ¿é·´¸´Ð´8´Î»ò8´ÎÒÔÉϵ«Ã»ÓдÓÀïÃæ¶Á£¬¶øÇÒÕâ¸ö¿é²»ÔÚÒ»¼¶»º´æ£¬ ÄÇô½ÏºÃµÄ×ö·¨ÊÇÏȶԸÿé×÷Ò»¸ö¡°ÑƶÁ¡±Ê¹Æä½øÈëcacheÐУ¬Èç´ËÒ»À´ËæºóËùÓÐÏòÕâ¸ö¿éµÄд²Ù×÷¾Í»á±»¶¨Ïòµ½cacheÀÿ´ÎÖ»ÏûºÄÒ»¸öʱÖÓÖÜÆÚ¡£ ÔÚ PPlain ºÍ PMMX ÉÏ£¬ÓÐʱ»áÒòÎªÖØ¸´Ð´ÏòÒ»¸öµØÖ·¶øÔÚÆä¼äûÓжÁËü¶ø´øÀ´Ð¡Ð¡µÄ³Í·£¡£
ÔÚ PPro£¬PII ºÍ PIIIÉÏ£¬Ò»´Îд²Ù×÷µÄcacheʧЧͨ³£»áµ¼Ö¶ÁÈëÒ»¸öcacheÐУ¬µ«Ò²ÓпÉÄÜʹ´æ´¢ÇøÓò×ö²»Í¬µÄ²Ù×÷£¬ÀýÈçÏÔ´æ (¼û Pentium Pro ϵÁпª·¢ÕßÊֲᣬ vol.3 : ²Ù×÷ϵͳд×÷ÕßÖ¸ÄÏ")¡£
Ìá¸ßÄÚ´æ¶ÁдËٶȵķ½·¨ÔÚÏÂÃæµÄ27.8Õ½ÚÌÖÂÛ¡£
PPlain ºÍ PPro ÓÐ 2 ¸öд»º´æ£¬PMMX£¬ PII ºÍ PIII ÓÐ 4 ¸ö¡£ ¹ÊÔÚ PMMX£¬ PII ºÍ PIII ÉÏÄã×î¶à¿ÉÒÔÓÐ4¸öδÍê³ÉµÄ²»ÃüÖÐcacheµÄд²Ù×÷¶ø²»»áʹºóÃæµÄÖ¸Áî²úÉúÑÓ³Ù¡£ ÿ¸öд»º´æ¿ÉÒÔ´¦ÀíµÄ²Ù×÷Êý¿í¶È×î¶à64λ¡£
ÁÙʱÊý¾Ý¿ÉÒÔ·½±ãµØ·ÅÔÚ¶ÑÕ»ÀÒòΪ¶ÑÕ»ÇøÓò·Ç³£ÓпÉÄÜÔÚcacheÖС£È»¶ø£¬Èç¹ûÄãµÄÊý¾ÝÔªËØ´óÓÚ¶ÑÕ»×Ö´óСʱӦ¸Ã×¢Òâ¶ÔÆëÎÊÌâ¡£
Èç¹ûÁ½¸öÊý¾Ý½á¹¹µÄÉúÃüÆÚ²»ÖصþµÄ»°£¬ÄÇôËüÃÇ¿ÉÄܻṲÏíÏàͬµÄ RAM ÇøÓò´Ó¶øÌá¸ßcacheЧÂÊ¡£ÕâÓëÔÚ¶ÑÕ»ÖÐΪÁÙʱ±äÁ¿·ÖÅä¿Õ¼äµÄÆÕ±éϰ¹ßÊÇÒ»Öµġ£
½«ÁÙʱÊý¾Ý±£´æÔڼĴæÆ÷ÀォÓиü¸ßµÄЧÂÊ¡£ ¼ÈÈ»¼Ä´æÆ÷ÊÇÒ»ÖÖÏ¡ÓÐ×ÊÔ´£¬Äã¿ÉÄÜÏëÓÃ[ESP]¶ø²»ÊÇ[EBP]À´¶¨Î»¶ÑÕ»ÀïµÄÊý¾Ý£¬ ÕâÑù¾Í¿ÉÒÔÊÍ·ÅEBPÓÃÓÚÆäËüÓÃ;¡£ ²»ÒªÍü¼ÇÁË ESP ÔÚÄãÿ´Î×ö PUSH »òÕß POP ʱ¶¼»á±»¸Ä±ä¡£ (Äã²»ÄÜÔÚ 16λ WindowsÏÂʹÓÃESP£¬ ÒòΪʱÖÓÖжϽ«ÔÚÄãµÄ´úÂëÖв»¿ÉÔ¤ÖªµÄλÖÃÐÞ¸ÄESPµÄ¸ß×Ö¡£)
ÓÐÒ»¸ö·Ö¿ªµÄcache¸ø´úÂëʹÓ㬠ËüºÍÊý¾ÝcacheÊÇÀàËÆµÄ¡£ ´úÂëcache µÄ´óСÔÚ PPlainºÍPProÉÏÊÇ 8 kb£¬ ÔÚ PMMX£¬PIIºÍPIIIÉÏÊÇ 16 kb¡£ ÄÜÈÃÄãµÄ´úÂëµÄ¹Ø¼ü²¿·Ö(×îÀïÃæµÄÑ»·)·ÅÈë´úÂëcacheÊǺÜÖØÒªµÄ¡£ ×î³£ÓõĴúÂë»òÕßÐèÒªÒ»ÆðʹÓõĹý³Ì×îºÃÊÇ´¢´æÔÚÁÙ½üµÄλÖᣠ²»³£ÓõķÖÖ§»òÕß¹ý³ÌÓ¦¸Ã·ÅÔ¶ÀëЩ£¬·ÅÔÚ´úÂëµÄÏÂÃæ»òÕ߯äËüµÄλÖá£
8. µÚÒ»´Î vs ÖØ¸´ÔËÐÐ
һƬ´úÂëÍùÍùÔÚµÚÒ»´ÎÔËÐÐʱ±ÈÖØ¸´ÔËÐÐÏûºÄ¸ü¶àµÄʱ¼ä¡£ ÔÒò¼ûÏÂ:
1. ´Ó RAM ¶ÁÈë´úÂëµ½cache»¨È¥Á˱ÈÔËÐÐËü¸ü¶àµÄʱ¼ä¡£
2. ´úÂë²Ù×÷µÄËùÓÐÊý¾Ý¶¼±ØÐë¼ÓÔØµ½cache£¬ Õâ±ÈÖ´ÐÐÄÇЩ²Ù×÷¸ü»¨Ê±¼ä¡£ µ±´úÂëÖØ¸´ÔËÐеÄʱºò£¬ Êý¾Ý¼¸ºõ¶¼ÔÚ cache Àï¡£
3. Ìø×ªÖ¸ÁîÔÚµÚÒ»´ÎÔËÐеÄʱºò²¢²»ÔÚ·ÖÖ§Ä¿µÄ»º´æ(branch target buffer£¬¼ò³ÆBTB)À Òò´ËÒ»°ã¶¼²»ÄÜÕýÈ·µÄÔ¤²â¡£ ¼ûµÚ22Õ¡£
4. PPlain ÉÏ£¬ ´úÂëµÄ½âÂëÊǸöÆ¿¾±¡£ Èç¹û»¨µôÒ»¸öʱÖÓÖÜÆÚÈ¥¼ì²âÖ¸Á¶È£¬ ÄÇô¾Í²»¿ÉÄÜÔÚÒ»¸öʱÖÓÖÜÆÚ½âÂëÁ½ÌõÖ¸Á ÒòΪ´¦ÀíÆ÷²»ÖªµÀµÚ¶þÌõÖ¸Áî´ÓÄÇÀ↑ ʼµÄ¡£ PPlain ͨ¹ý¼ÇסÉÏ´ÎÔËÐк󱣴æÔÚcacheÀïµÄÿÌõÖ¸ÁîµÄ³¤¶ÈÀ´½â¾öÕâ¸öÎÊÌâ¡£ ÕâÑù×öµÄ½á¹ûÊÇ£¬ PPlainÉϵÚÒ»´ÎÖ´ÐÐʱ£¬Ö¸ÁîÈç¹û²»ÊÇÖ»ÓÐ1¸ö×Ö½Ú³¤µÄ»°¾Í²»»áÅä¶ÔÖ´ÐС£ PMMX£¬ PPro£¬ PII ºÍ PIII ÔÚµÚÒ»´Î½âÂëȴûÓÐÕâ¸öÎÊÌâ¡£
ÒòΪÕâËĸöÔÒò£¬ÔÚÑ»·ÄÚ²¿µÄÒ»¶Î´úÂëµÚÒ»´ÎÔËÐÐͨ³£±ÈËæºóµÄÔËÐл¨È¥¸ü¶àµÄʱ¼ä¡£
Èç¹ûÄãʹÓÃÁËÒ»¸öºÜ´óµÄÑ»·¶ø²»ÄÜ·ÅÈë´úÂëcache£¬½«µ¼ÖÂЧÂÊϽµ£¬ÒòΪËüÃDz»ÄÜÔÚ cache ÔËÐС£ Òò´ËÄãÓ¦¸ÃÖØÐÂ×éÖ¯Ò»ÏÂÑ»·Ê¹cacheÄÜ·ÅÏÂËüÃÇ¡£
Èç¹ûÄãÓзdz£¶àµÄÌø×ª£¬µ÷Ó㬷ÖÖ§ÔÚÑ»·À¾Í»á·´¸´µÄ²úÉú·ÖÖ§Ä¿µÄ»º´æÊ§°Ü¡£
ͬÑùµÄ£¬Èç¹ûÑ»··´¸´²Ù×÷Ò»¸ö¶ÔÊý¾Ýcache¶øÑÔÌ«´óµÄÊý¾Ý½á¹¹£¬Ò²»áÒ»Ö±µÃµ½Êý¾Ýcache²»ÃüÖеijͷ£¡£
9. µØÖ·Éú³É»¥Ëø(AGI) (PPlain and PMMX)
Ö¸Áî²Ù×÷ÄÚ´æËùÐèÒªµÄµØÖ·ÐèÒªÒ»¸öʱÖÓÖÜÆÚÀ´¼ÆËã¡£ ͨ³£ÔÚÇ°ÃæµÄÖ¸Áî»òÖ¸Áî¶ÔÖ´ÐеÄʱºò£¬ËüÒѾÔÚÁ÷Ë®Ïßͨ¹ýÒ»¸ö¶ÀÁ¢µÄ½×¶ÎÉϼÆËãºÃÁË¡£ µ«ÊÇÈç¹ûµØÖ·µÄ¼ÆËãÒÐÀµÉϸöʱÖÓÖÜÆÚµÄÔËÐнá¹ûµÄ»°£¬Äã¾ÍÐèÒªÒ»¸ö¶îÍâʱÖÓÖÜÆÚÀ´µÈ´ýµØÖ·µÄ¼ÆËã¡£ Õâ¾Í½Ð×öAGIÑÓ³Ù¡£ ÀýÈç:
ADD EBX£¬4 / MOV EAX£¬[EBX] ; AGI ÑÓ³Ù
Àý×ÓÀïµÄÑÓ³Ù¿ÉÒÔÏò ADD EBX£¬4 and MOV EAX£¬[EBX] ¼äÔö¼ÓһЩÆäËüµÄÖ¸Áî»òÕßÖØÐÂд³É MOV EAX£¬[EBX+4] / ADD EBX£¬4 À´È¥µô¡£
µ±ÄãÒþÐÔµÄʹÓÃESPѰַ£¬ ±ÈÈç PUSH£¬ POP£¬ CALL£¬ and RET£¬ ÇÒ ESP ÔÚǰ¸öÖÜÆÚ±»MOV£¬ ADD »ò SUB µÈÐ޸ģ¬ÕâÑùÒ²»áÔì³ÉAGIÑÓ³Ù¡£ PPlain ¼° PMMX ÓÐרÃŵĵç·À´Ô¤²âÕ»²Ù×÷ºóµÄESPÖµ£¬ Òò´ËÄãÔÚÓÃPUSH£¬ POP£¬ »ò CALL ¸Ä±ä ESP ºó²»»áÓöµ½AGIÑÓ³Ù¡£ ÔÚ RET ºóÃæ£¬ ½ö½öÔÚÓÐÁ¢¼´²Ù×÷Êý¶ÔESP×ö¼Ó·¨Ê±²Å»á²úÉúAGIÑÓ³Ù¡£
ÀýÈç:
ADD ESP£¬4 / POP ESI ; AGI ÑÓ³Ù
POP EAX / POP ESI ; ÎÞÑÓ³Ù£¬ Åä¶Ô
MOV ESP£¬EBP / RET ; AGI ÑÓ³Ù
CALL L1 / L1: MOV EAX£¬[ESP+8] ; ÎÞÑÓ³Ù
RET / POP EAX ; ÎÞÑÓ³Ù
RET 8 / POP EAX ; AGI ÑÓ³Ù
µ± LEA Ö¸ÁîʹÓÃÁË»ù¼Ä´æÆ÷»òË÷Òý¼Ä´æÆ÷£¬ ¶øËüÃÇÔÚÇ°ÃæµÄʱÖÓÖÜÆÚ±»¸Ä±äÁË£¬Í¬Ñù»á·¢ÉúAGIÑÓ³Ù¡£ ÀýÈç:
INC ESI / LEA EAX£¬[EBX+4*ESI] ; AGI ÑÓ³Ù
PPro£¬ PII ºÍ PIII ÔÚ¶ÁÄÚ´æºÍLEAÉÏûÓÐ AGI ÑÓ³Ù£¬ µ«ÊÇÔÚдÄÚ´æÊ±»áÓÐ AGI ÑÓ³Ù¡£ Èç¹ûºóÀ´µÄ´úÂë²»ÐèÒªµÈ´ýд²Ù×÷½áÊøµÄ»°Õâ²¢ÎÞ´óÓ°Ïì¡£
10. ÕûÊýÖ¸ÁîÅä¶Ô(PPlain ¼° PMMX)
10.1 ÍêÃÀµÄÅä¶Ô
PPlain ¼° PMMXÓÐÁ½ÌõÁ÷Ë®ÏßÀ´Ö´ÐÐÖ¸Á ·Ö±ð½Ð×ö U-¹ÜµÀºÍV-¹ÜµÀ¡£ ÔÚÒ»¶¨µÄÌõ¼þÏÂÁ½ÌõÖ¸Áî¿ÉÒÔÒ»¸öÔÚ U-¹ÜµÀ£¬Ò»¸öÔÚ V-¹ÜµÀ ͬʱִÐС£ Õâ¿ÉÒÔʹËٶȼӱ¶¡£ Òò´Ë½«ÄãµÄÖ¸ÁîÖØÐÂ×é֯һϴÎÐòʹËüÃÇÅä¶ÔÊǺÜÓÐÀûµÄ¡£
ÏÂÃæÕâЩָÁî¿ÉÒÔÔÚÈÎÒâµÄ¹ÜµÀÄÚÅä¶Ô:
*MOV ¼Ä´æÆ÷£¬ Äڴ棬 »òÊÇÁ¢¼´Êýµ½¼Ä´æÆ÷»òÄÚ´æ
*PUSH ¼Ä´æÆ÷»òÁ¢¼´Êý£¬ POP ¼Ä´æÆ÷
*LEA£¬ NOP
*INC£¬ DEC£¬ ADD£¬ SUB£¬ CMP£¬ AND£¬ OR£¬ XOR£¬
*»¹ÓÐһЩÐÎʽµÄ TEST (¼û26.14ÕÂ)
ÏÂÃæµÄÖ¸ÁîÖ»ÄÜÔÚ U-¹ÜµÀ Åä¶Ô:
¡¡ ADC£¬ SBB
SHR£¬ SAR£¬ SHL£¬ SAL ÒÆ¶¯Á¢¼´Êýλ
ROR£¬ ROL£¬ RCR£¬ RCL ÒÆ¶¯Á¢¼´Êý1λ
ÏÂÃæµÄÖ¸Áî¿ÉÒÔÔÚÈκιܵÀÔËÐУ¬µ«ÊÇÖ»ÄÜÔÚ V-¹ÜµÀ Åä¶Ô:
near call
short ¼° near jump
short ¼° near Ìõ¼þÌø×ª¡£
³ýÕâЩָÁîÖ®ÍâµÄÕûÐÍÖ¸Áî¶¼Ö»ÄÜÔÚ U-¹ÜµÀ ÔËÐУ¬ ¶øÇÒ²»ÄÜÅä¶Ô¡£
Á½ÌõÁ¬ÐøµÄÖ¸ÁîÂú×ãÁËÏÂÃæµÄÒªÇóʱ¾Í¿ÉÒÔÅä¶Ô:
1. µÚÒ»ÌõÖ¸ÁîÔÚ U ¹ÜµÀ ÖУ¬µÚ¶þÌõÖ¸ÁîÔÚ V ¹ÜµÀ ÖУ¬ ÇÒËüÃǶ¼ÊÇ¿ÉÅä¶ÔµÄ¡£
2. µ±µÚÒ»ÌõÖ¸Áîдһ¸ö¼Ä´æÆ÷µÄʱºò£¬µÚ¶þÌõÖ¸Áȥ¶Á/дËü¡£
ÀýÈç:
MOV EAX£¬ EBX / MOV ECX£¬ EAX ; дºóÃæ¸ú×ŶÁ£¬²»ÄÜÅä¶Ô
MOV EAX£¬ 1 / MOV EAX£¬ 2 ; дºóÃæ¸ú×Åд£¬²»ÄÜÅä¶Ô
MOV EBX£¬ EAX / MOV EAX£¬ 2 ; ¶ÁºóÃæ¸ú×Åд£¬¿ÉÒÔÅä¶Ô
MOV EBX£¬ EAX / MOV ECX£¬ EAX ; ¶ÁºóÃæ¸ú×ŶÁ£¬¿ÉÒÔÅä¶Ô
MOV EBX£¬ EAX / INC EAX ; ¶ÁºóÃæ¸ú×ŶÁд£¬¿ÉÒÔÅä¶Ô
3. ÔÚµÚ2Ìõ¹æÔòÀïÃæ£¬ ¼Ä´æÆ÷µÄÒ»²¿·Ö×÷ΪÕû¸ö¼Ä´æÆ÷À´¶Ô´ý£¬ ÀýÈç:
MOV AL£¬ BL / MOV AH£¬ 0
дÈëÏà¶Ô¼Ä´æÆ÷µÄ²»Í¬²¿·Ö£¬ ²»ÄÜÅä¶Ô
4. µ±Á½ÌõÖ¸ÁîͬʱдµÄÊDZêÖ¾¼Ä´æÆ÷µÄ²»Í¬²¿·Öʱ£¬¹æÔò2ºÍ3¶¼¿ÉÒÔºöÂÔµô¡£ ÀýÈç:
SHR EAX£¬ 4 / INC EBX ; ¿ÉÒÔÅä¶Ô
5. Ò»¸öд±ê¼Ç¼Ä´æÆ÷µÄÖ¸Áî¿ÉÒÔºÍÒ»¸öÌõ¼þÌø×ªÅä¶Ô£¬ ¶øºöÂÔµô¹æÔò 2 ¡£ ÀýÈç:
CMP EAX£¬ 2 / JA LabelBigger ; ¿ÉÒÔÅä¶Ô
6. ÏÂÃæµÄÖ¸Áî¶Ô£¬ËäȻͬʱÐÞ¸ÄÁËÕ»Ö¸Õ룬µ«ÊÇËüÃÇÒÀÈ»¿ÉÒÔÅä¶Ô:
¡¡¡¡PUSH + PUSH£¬ PUSH + CALL£¬ POP + POP
7£® ¶ÔÓÚÓÐǰ׺µÄÅä¶ÔÖ¸ÁîÓÐһЩÏÞÖÆ¡£ ÏÂÃæÁгöÁ˼¸ÖÖÐÎʽµÄǰ׺:
¡¡¡¡ *ÓöÎǰ׺¶Ô·Çȱʡ¶ÎѰַµÄÖ¸Áî¡£
¡¡¡¡*ÔÚ 32 λ´úÂëÖÐʹÓà 16 λµÄÊý¾Ý£¬ »ò16λµÄ´úÂëÖÐʹÓà 32 λÊý¾ÝµÄ´ø²Ù×÷Êý³ß´çǰ׺µÄÖ¸Áî¡£
¡¡¡¡*16λģʽÖУ¬ ʹÓÃ32λµÄ»ùÖ·¼Ä´æÆ÷»ò±äÖ·¼Ä´æÆ÷µÄ´øµØÖ·³ß´çǰ׺µÄÖ¸Áî¡£
¡¡¡¡*´øÖظ´Ç°×ºµÄ×Ö·û´®²Ù×÷Ö¸Áî¡£
¡¡¡¡*´øLOCKǰ׺µÄËø¶¨Ö¸Áî¡£
¡¡¡¡*ºÜ¶àÔÚ 8086 ´¦ÀíÆ÷ÖÐûÓÐʵÏֵģ¬ÓÐÁ½¸ö×ֽڵIJÙ×÷ÂëÇÒÆäÖеÚÒ»¸ö×Ö½ÚÊÇ 0FHµÄÖ¸Áî¡£ Õâ¸ö 0FH ×Ö½ÚµÄÐÐΪÔÚ
PPlain ÉϾÍÏñÒ»¸öǰ׺£¬ µ«ÊǺóÀ´µÄ°æ±¾ÖоͲ»ÊÇ¡£ ×î³£¼ûµÄ´ø 0FH ǰ׺µÄÖ¸ÁîÓÐ: MOVZX£¬ MOVSX£¬ PUSH FS£¬ POP FS£¬ PUSH GS£¬ POP GS£¬ LFS£¬ LGS£¬ LSS£¬ SETcc£¬ BT£¬ BTC£¬ BTR£¬ ¡¡¡¡BTS£¬BSF£¬BSR£¬ SHLD£¬ SHRD£¬»¹ÓдøÁ½¸ö²Ù×÷ÊýÇÒûÓÐÁ¢¼´ÊýµÄ IMUL¡£
ÔÚ PPlain ÉÏ£¬ ÓÐǰ׺µÄÖ¸Áî³ýÁ˽ü¾àÀëÌõ¼þÌø×ªÍâÖ»ÄÜÔÚ U ¹ÜµÀÖÐÖ´ÐС£
PMMX ÉÏ£¬ ´øÓвÙ×÷Êý³ß´ç¡¢µØÖ·³ß´ç»ò0FHǰ׺µÄÖ¸Áî¿ÉÒÔÔÚÈÎÒâ¹ÜµÀÖ´ÐУ¬ µ«ÊÇ´øÓжÎǰ׺£¬ ÖØ¸´Ç°×º£¬ »òÕßËø¶¨Ç°×ºµÄÖ¸ÁîÖ»ÄÜÔÚ U ¹ÜµÀÖ´ÐС£
8£® ¼È´øÓÐÆ«ÒÆÁ¿ÓÖ´øÓÐÁ¢¼´²Ù×÷ÊýµÄÖ¸ÁîÔÚ PPlain Éϲ»ÄÜÅä¶Ô£¬ ¶øÔÚ PMMX ÉÏÖ»ÄÜÔÚ U ¹ÜµÀÅä¶Ô:
MOV DWORD PTR DS:[1000]£¬ 0 ; ²»ÄÜÅä¶Ô£¬ »òÕßÖ»ÄÜÔÚ U ¹ÜµÀÅä¶Ô
CMP BYTE PTR [EBX+8]£¬ 1 ; ²»ÄÜÅä¶Ô£¬ »òÕßÖ»ÄÜÔÚ U ¹ÜµÀÅä¶Ô
CMP BYTE PTR [EBX]£¬ 1 ; ¿ÉÒÔÅä¶Ô
CMP BYTE PTR [EBX+8]£¬ AL ; ¿ÉÒÔÅä¶Ô
(¹ØÓڼȴøÓÐÆ«ÒÆÁ¿ÓÖ´øÓÐÁ¢¼´²Ù×÷ÊýµÄÖ¸ÁîÔÚ PMMX ÉÏÅä¶ÔµÄÁíÒ»¸öÎÊÌâÊÇ:ÕâÌõÖ¸ÁîµÄ³¤¶È¿ÉÄÜ>=7×Ö½Ú£¬ ÕâÒâζ×Å£¬ Ò»¸öʱÖÓÖÜÆÚÖ»ÓÐÒ»ÌõÖ¸ÁîÄܱ»½âÂ룬 ÕâЩ·ÅÔÚµÚ12Õ½âÊÍ¡£)
9£® Á½ÌõÖ¸Áî±ØÐëÒѾԤ¶Á½øÀ´ÇÒ±»½âÂë¡£ ÕâЩ·ÅÔÚµÚ 8 Õ½âÊÍ¡£
10£® PMMX ÉÏ£¬ ¶ÔÓÚ MMX Ö¸ÁîÓÐÌØÊâµÄÅä¶Ô¹æÔò:
*MMX ÒÆÎ»£¬ pack ºÍ unpack Ö¸Áî¿ÉÒÔÔÚÈÎÒâµÄ¹ÜµÀÖ´ÐУ¬µ«ÊDz»ÄܸúÁíÍâÒ»Ìõ MMX ÒÆÎ»£¬pack ºÍ unpack Ö¸ÁîÅä¶Ô¡£
*MMX ³Ë·¨Ö¸Áî¿ÉÒÔÔÚÈÎÒâ¹ÜµÀÔËÐУ¬µ«ÊDz»ÄܺÍÁíÍâÒ»Ìõ MMX ³Ë·¨Ö¸ÁîÅä¶Ô¡£³Ë·¨Ö¸ÁîÐèÒªÏûºÄ 3 ¸öʱÖÓÖÜÆÚ£¬ÆäÖкóÁ½¸öʱÖÓÖÜÆÚ²¢ÐÐÖ´ÐÐÆäËüÖ¸Á¾ÍºÃÏ󸡵ãÖ¸ÁîÄÇÑù (²Î¼ûµÚ 24 ÕÂ)¡£
*Ò»Ìõ·ÃÎÊÄÚ´æ»òÕûÐͼĴæÆ÷µÄ MMX Ö¸ÁîÖ»ÄÜÔÚ U ¹ÜµÀÔËÐУ¬ ¶øÇÒ²»Äܸú·Ç MMX Ö¸ÁîÅä¶Ô¡£
10£®2¡¡ÓÐȱÏÝÅä¶Ô
Óм¸ÖÖÇé¿öÏ£¬ Á½Ìõ³É¶ÔÖ¸Áî¸ù±¾²»Äܲ¢ÐÐÖ´ÐУ¬ »òÕßÖ»ÊÇʱ¼äÉϲ¿·ÖÖØµþ¡£ È»¶øËüÃÇÒÀÈ»±»µ±×÷ÊdzɶԵģ¬ ÒòΪµÚÒ»ÌõÖ¸ÁîÔÚ U ¹ÜµÀÖ´ÐУ¬ ¶øµÚ¶þÌõÔÚ V ¹ÜµÀ¡£¶øÇÒËæºóµÄÖ¸Áî±ØÐëÒªÔÚÁ½ÌõÓÐȱÏÝÅä¶ÔµÄÖ¸Áî¶¼Íê³Éºó²Å¿ªÊ¼ÔËÐС£
ÓÐȱÏÝÅä¶Ô·¢ÉúÔÚÒÔÏÂÌõ¼þÏÂ:
1£® Èç¹ûµÚ¶þÌõÖ¸ÁîÔâÓöÁËÒ»¸ö AGI ÑÓ³Ù (¼ûµÚ9ÕÂ)¡£
2£® Á½ÌõÖ¸Áî²»ÄÜͬʱ·ÃÎÊÄÚ´æµÄͬһ¸ö DWORD¡£ ÏÂÃæµÄÀý×Ó¼Ù¶¨ ESI ¿ÉÒÔ±» 4 Õû³ý:
¡¡¡¡¡¡¡¡MOV AL£¬ [ESI] / MOV BL£¬ [ESI+1]
Á½¸ö²Ù×÷ÊýÊÇÔÚͬһ¸ö DWORD À Òò´ËËüÃDz»ÄÜͬʱִÐС£ Õâ¶ÔÖ¸ÁîÐèÒª 2 ¸öʱÖÓÖÜÆÚ¡£
¡¡¡¡¡¡¡¡MOV AL£¬ [ESI+3] / MOV BL£¬ [ESI+4]
ÕâÀïÁ½¸ö²Ù×÷Êý·Ö±ð´¦ÓÚÁ½¸ö DWORD µÄ±ß½ç£¬ Òò´ËËüÃÇÍêÃÀµØÅä¶Ô£¬ Ö»ÐèÒªÏûºÄ 1 ¸öʱÖÓÖÜÆÚ¡£
3£® µÚ 2 Ìõ¿î¿ÉÒÔÀ©Õ¹µ½Á½¸öµØÖ·µÄ 2-4 λÏàͬµÄÇé¿ö (cacheÐгåÍ»)¡£ ¶ÔÓÚ DWORD µØÖ·£¬ ÕâÒâζ×ÅÁ½¸öµØÖ·²î²»Äܱ» 32 Õû³ý¡£ ÀýÈç:
¡¡¡¡¡¡¡¡MOV [ESI]£¬ EAX / MOV [ESI+32000]£¬ EBX ; ÓÐȱÏÝÅä¶Ô
¡¡¡¡¡¡¡¡MOV [ESI]£¬ EAX / MOV [ESI+32004]£¬ EBX ; ÍêÃÀÅä¶Ô
²»·ÃÎÊÄÚ´æµÄÅä¶ÔÕûÐÍÖ¸Áî¿ÉÒÔÔÚÒ»¸öʱÖÓÖÜÆÚÖ´ÐÐÍ꣬µ«ÊÇÔ¤²âʧ°ÜµÄÌø×ªÀýÍâ¡£ ¶Á/дÄÚ´æµÄMOVÖ¸Áµ±Êý¾ÝÇøÔÚcacheÀï²¢Ñϸñ¶ÔÆëµÄʱºòÒ²Ö»ÐèÒªÒ»¸öʱÖÓÖÜÆÚ£¬¼´Ê¹ÓÃÁËÏñ±ÈÀý±äַѰַÕâÑù¸´ÔÓµÄѰַģʽ£¬Ò²²»»áÓÐËÙ¶ÈÉϵijͷ£¡£
Ò»×éÅä¶ÔÕûÊýÖ¸Á Èç¹ûÐèÒª¶ÁÄڴ棬 ×öһЩ¼ÆËãºó°Ñ½á¹û±£´æÔڼĴæÆ÷»ò±ê¼Ç¼Ä´æÆ÷ÖÐʱ£¬ ÐèÒªÏûºÄÁ½¸öʱÖÓÖÜÆÚ¡£ (¶Á/ÐÞ¸Ä Ö¸Áî)¡£
Ò»×éÅä¶ÔÕûÊýÖ¸Á Èç¹ûÐèÒª¶ÁÄڴ棬 ×öһЩ¼ÆËãºó°Ñ½á¹û»ØÐ´µ½ÄÚ´æÖУ¬ ÐèÒªÏûºÄ3¸öʱÖÓÖÜÆÚ¡£ (¶Á/ÐÞ¸Ä/д Ö¸Áî)¡£
4£® Èç¹ûÒ»Ìõ ¶Á/ÐÞ¸Ä/д Ö¸ÁîºÍÒ»Ìõ ¶Á/ÐÞ¸Ä »ò ¶Á/ÐÞ¸Ä/дָÁî Åä¶Ô£¬ ÄÇôËüÃǾÍÊÇÒ»¸öÓÐȱÏÝÅä¶Ô¡£
ϱíչʾÁ˸÷ÖÖÇé¿öÏÂÐèÒªµÄʱÖÓÖÜÆÚÊý:
| µÚÒ»ÌõÖ¸Áî | µÚ¶þÌõÖ¸Áî | ||
| MOV »òÕß ½ö½öÊǼĴæÆ÷²Ù×÷ | ¶Á/ÐÞ¸Ä | ¶Á/ÐÞ¸Ä/д | |
| MOV »ò½ö½öÊǼĴæÆ÷²Ù×÷ | 1 | 2 | 3 |
| ¶Á/ÐÞ¸Ä | 2 | 2 | 3 |
| ¶Á/ÐÞ¸Ä/д | 3 | 4 | 5 |
ÀýÈç:
ADD [mem1]£¬ EAX / ADD EBX£¬ [mem2] ; 4 ¸öʱÖÓÖÜÆÚ
ADD EBX£¬ [mem2] / ADD [mem1]£¬ EAX ; 3 ¸öʱÖÓÖÜÆÚ
5£® µ±Á½ÌõÅä¶ÔÖ¸Áî¶¼ÒòΪcacheʧЧ£¬Ã»ÓÐ¶ÔÆë£¬»òÌø×ªÔ¤²âʧ°ÜµÈÇé¿ö¶øÐèÒª¶îÍâʱ¼äʱ£¬ Ò»¶ÔÖ¸ÁîÏûºÄµÄʱ¼ä½«±ÈÆäÖÐÈκÎÒ»ÌõÐèÒªµÄʱ¼ä¶¼³¤£¬ µ«ÊDZÈÁ½ÌõÖ¸ÁîÐèÒªµÄʱ¼äÖ®ºÍ¶Ì¡£
6£® ÔÚ¿ÉÅä¶Ô¸¡µãÖ¸ÁîÖ®ºóÓëÆäÅä¶ÔµÄFXCHÖ¸Á µ±ÏÂÒ»ÌõÖ¸Áî²»ÊǸ¡µãÖ¸Áîʱ×é³ÉÒ»¸öȱÏÝÅä¶Ô¡£
ΪÁ˱ÜÃâÓÐȱÏÝÅä¶Ô£¬Äã±ØÐëÖªµÀÄÄÌõÖ¸Áî½øÈëÁË U ¹ÜµÀ£¬ ÄÄÌõ½øÈëÁË V ¹ÜµÀ¡£ Ϊ´Ë£¬Äã¿ÉÒÔÏòǰ¿´¿´ÄãµÄ´úÂ룬ÕÒµ½ÄÇЩ²»ÄÜÅä¶ÔµÄ£¬»òÕßÖ»ÄÜÔÚÒ»Ìõ¹ÜµÀÖÐÅä¶Ô£¬ ÓÖ»òÒòΪÉÏÃæÌá¼°µÄ¹æÔò¶ø²»ÄÜÅä¶ÔµÄÖ¸ÁÕâÑù¾Í¿ÉÒÔÇå³þµØÖªµÀºóÃæµÄÖ¸ÁîÖÐÄÄÌõÖ¸Áî½øÈëÁË U ¹ÜµÀ£¬ ÄÄÌõ½øÈëÁË V ¹ÜµÀ¡£
ÓÐȱÏÝÅä¶Ôͨ³£¿ÉÒÔͨ¹ýÖØ×éÄãµÄÖ¸ÁîÀ´±ÜÃâ¡£ ÀýÈç:
¡¡¡¡¡¡¡¡
L1: MOV EAX£¬[ESI]
¡¡¡¡¡¡¡¡¡¡¡¡MOV EBX£¬[ESI]
¡¡¡¡¡¡¡¡¡¡¡¡INC ECX
ÕâÀïÁ½Ìõ MOV Ö¸Áî×é³ÉÁËÒ»¸öÓÐȱÏÝÅä¶Ô£¬ ÒòΪËüÃÇ·ÃÎÊÁËͬһÄÚ´æµØÖ·£¬ ËùÒÔÕâ×éÖ¸ÁîÐèÒªÏûºÄ 3 ¸öʱÖÓÖÜÆÚ¡£ Äã¿ÉÒÔͨ¹ýÖØ×éÖ¸Á °Ñ INC ECX ¸úÆäÖÐÒ»¸ö MOV Ö¸ÁîÅä¶Ô¡£
¡¡¡¡¡¡¡¡L2: MOV EAX£¬OFFSET A
¡¡¡¡¡¡¡¡¡¡¡¡XOR EBX£¬EBX
¡¡¡¡¡¡¡¡¡¡¡¡INC EBX
¡¡¡¡¡¡¡¡¡¡¡¡MOV ECX£¬[EAX]
¡¡¡¡¡¡¡¡¡¡¡¡JMP L1
INC EBX / MOV ECX£¬[EAX] Õâ¶ÔÖ¸ÁîÊÇÒ»¸öÓÐȱÏÝÅä¶Ô£¬ ÒòΪºóÒ»ÌõÖ¸Áî·¢ÉúÁË AGI ÑÓ³Ù¡£ Õâ×éÖ¸ÁîÏûºÄ 4 ¸öʱÖÓÖÜÆÚ¡£ Èç¹ûÄã²åÈëÒ»Ìõ NOP »òÈÎÒâ±ðµÄÖ¸Á ʹµÃMOV ECX£¬[EAX] ¸ú JMP L1 Åä¶Ô£¬ ÕâÑùÕâ×éÖ¸Áî¾ÍÖ»ÐèÒªÏûºÄ 3 ¸öʱÖÓÖÜÆÚÁË¡£
ÏÂÒ»¸öÀý×ÓÊÇ 16 λģʽÏµģ¬ ¼ÙÉè SP ¿ÉÒÔ±» 4 Õû³ý:
L3: ¡¡¡¡¡¡¡¡PUSH AX
¡¡¡¡¡¡¡¡¡¡¡¡PUSH BX
¡¡¡¡¡¡¡¡¡¡¡¡PUSH CX
¡¡¡¡¡¡¡¡¡¡¡¡PUSH DX
¡¡¡¡¡¡¡¡¡¡¡¡CALL FUNC
ÕâÀï PUSH Ö¸Áî×é³ÉÁËÁ½¸öÓÐȱÏÝÅä¶Ô£¬ ÒòΪ¸÷¶ÔÖ¸ÁîÖеÄÁ½¸ö²Ù×÷Êý¶¼·ÅÈëÁËÄÚ´æµÄͬһ DWORD ÖС£ PUSH BX ¿ÉÄÜ¿ÉÒÔºÍ PUSH CX ÍêÃÀÅä¶ÔÆðÀ´ (ÒòΪËüÃÇ·ÃÎʵÄÊÇÁ½¸ö²»Í¬µÄ DWORD) µ«ÊDz¢²»ÊÇÕâÑù£¬ ÒòΪËüÒѾºÍ PUSH AX Åä¶ÔÁË¡£ Õâ×éÖ¸ÁîÏûºÄÁË 5 ¸öʱÖÓÖÜÆÚ¡£ Èç¹ûÄã²åÈëÒ»¸ö NOP »òÕ߯äËüÖ¸Á Èà PUSH BX ¸ú PUSH CX Åä¶Ô£¬ ¶ø PUSH DX ºÍ CALL FUNC Åä¶Ô£¬ ÕâÑùÕâ×éÖ¸Áî¾ÍÖ»ÐèÒª 3 ¸öʱÖÓÖÜÆÚÁË¡£ ÁíÒ»¸ö½â¾ö·½°¸ÊÇ£¬ÈÃSP²»±» 4 Õû³ý¡£ ÏëÖªµÀ SP ÊÇ·ñ±» 4 Õû³ýÔÚ 16 λģʽÏÂÊǺÜÀ§Äѵģ¬ ËùÒÔ±ÜÃâÕâ¸öÎÊÌâµÄ×î¼Ñ·½°¸ÊÇȥʹÓà 32 λģʽ¡£
11£® ½«¸´ÔÓÖ¸Á·Ö¸îΪ¼òµ¥Ö¸Áî (PPlain ¼° PMMX)
Äã¿ÉÒÔ°Ñ ¶Á/ÐÞ¸Ä ºÍ ¶Á/ÐÞ¸Ä/д Ö¸ÁîÇпªÀ´Ìá¸ßÅä¶Ô»ú»á¡£ ÀýÈç:
ADD [mem1]£¬EAX / ADD [mem2]£¬EBX ; 5 ¸öʱÖÓÖÜÆÚ
Õâ¸ö´úÂë¿ÉÒÔÇпª£¬ ¶øÖ»ÐèÒªÏûºÄ 3 ¸öʱÖÓÖÜÆÚ:
MOV ECX£¬[mem1] / MOV EDX£¬[mem2] / ADD ECX£¬EAX / ADD EDX£¬EBX
MOV [mem1]£¬ECX / MOV [mem2]£¬EDX
ͬÑùµÄÄã¿ÉÒ԰Ѳ»ÄÜÅä¶ÔµÄÖ¸ÁîÇпªÈÃËüÃÇ¿ÉÒÔÅä¶Ô:
PUSH [mem1]
PUSH [mem2] ; ²»ÄÜÅä¶Ô
Çпª±ä³É:
MOV EAX£¬[mem1]
MOV EBX£¬[mem2]
PUSH EAX
PUSH EBX ; ËùÓеͼÅä¶ÔÁË
ÏÂÃæ»¹ÓÐÁíһЩÀý×Ó£¬ չʾÁËһЩ²»ÄÜÅä¶ÔµÄÖ¸ÁîÇпªºó±ä³É¼òµ¥µÄ¿ÉÅä¶ÔÖ¸Áî:
CDQ
ÇгÉ: MOV EDX£¬EAX / SAR EDX£¬31
NOT EAX ¸ÄΪ XOR EAX£¬-1
NEG EAX ÇÐ³É XOR EAX£¬-1 / INC EAX
MOVZX EAX£¬BYTE PTR [mem] ÇÐ³É XOR EAX£¬EAX / MOV AL£¬BYTE PTR
[mem]
JECXZ ÇÐ³É TEST ECX£¬ECX / JZ
LOOP ÇÐ³É DEC ECX / JNZ
XLAT ¸ÄΪ MOV AL£¬[EBX+EAX]
Èç¹ûÇпªÖ¸Áî²¢²»ÄÜÌá¸ßËÙ¶È£¬ ÄãÓ¦¸Ã±£³Ö¸´ÔÓÖ¸Áî»ò²»ÄÜÅä¶ÔµÄÖ¸Á ÕâÑù¿ÉÒÔ¼õС´úÂëµÄ³ß´ç¡£
¶ÔÓÚ PPro£¬ PII and PIII£¬ ²»ÐèÒª½«Ö¸ÁîÇпª£¬ ³ý·ÇÄܲúÉú¸üСµÄ´úÂë¡£
12. ǰ׺(PPlainºÍPMMX)
ÓÐǰ׺µÄÖ¸Áî¿ÉÄÜÎÞ·¨ÔÚV-¹ÜµÀÖ´ÐÐ (¼ûµÚ10Õ£¬µÚ7²¿·Ö)£¬ ²¢ÇÒËüµÄ½âÂëʱ¼ä¶àÓÚÒ»¸öÖÜÆÚ¡£
ÔÚ PPlain
ÉÏ£¬³ýÁËÌõ¼þ½üÌø×ªµÄ0FHǰ׺Í⣬ÿ¸öǰ׺µÄ½âÂëʱ¼äÊÇÒ»¸öʱÖÓÖÜÆÚ¡£
PMMX ¶ÔÓÚ0FHǰ׺ûÓнâÂëÑÓ³Ù¡£ ¶Îǰ׺ºÍÖØ¸´Ç°×ºÓà 1 ¸öʱÖÓÖÜÆÚÀ´½âÂë¡£ µØÖ·³ß´çºÍ²Ù×÷Êý³ß´çǰ׺Óà 2
¸öÖÜÆÚÀ´½âÂë¡£ ÔÚ PMMX ÉÏ£¬Èç¹ûÁ½ÌõÖ¸ÁîÖеÚÒ»ÌõÓÐÒ»¸ö¶Îǰ׺»òÖØ¸´Ç°×º»òûÓÐǰ׺£¬µÚ¶þÌõûÓÐǰ׺£¬ÄÇôËüÄÜÔÚÒ»¸öÖÜÆÚÄÚ½âÂëÕâÁ½ÌõÖ¸Áî¡£
ÓеØÖ·³ß´ç»ò²Ù×÷Êý³ß´çǰ׺µÄÖ¸ÁîÔÚPMMXÉÏÖ»Äܱ»µ¥¶À½âÂë¡£ ¶àÓÚÒ»¸öǰ׺µÄÖ¸Áÿ¸öǰ׺»¯1¸öÖÜÆÚ½âÂë¡£
ÔÚ32λģʽÏ£¬µØÖ·³ß´çǰ׺¿ÉÒÔ²»Óã»
ÓÃÁËÆ½Ì¹ÄÚ´æÄ£Ê½ºó£¬¶Îǰ׺ҲÄܲ»Óã» Èç¹ûÖ»ÓÃ8λºÍ32λÕûÐ͵ϰ£¬²Ù×÷Êý³ß´çǰ׺ҲÄܲ»Óá£
ÔÚǰ׺²»¿É±ÜÃâÇé¿öÏ£¬Èç¹ûÇ°ÃæµÄÖ¸ÁîÖ´ÐÐʱ¼ä³¬¹ýÒ»¸öʱÖÓÖÜÆÚµÄ»°£¬ÄÇô½âÂëÑÓ³Ù¿ÉÄܱ»Ñڸǡ£
PPlainµÄ¹æÔòÊÇ£¬ÈκÎÖ´ÐÐʱ¼ä(²»°üÀ¨½âÂë)ΪN¸öʱÖÓÖÜÆÚµÄÖ¸Áî¿ÉÒÔÑÚ¸ÇÏÂÁ½Ìõ£¨ÓÐʱÊÇÈýÌõ£©Ö¸Áî»òÖ¸Áî¶ÔÀïN-1¸öǰ׺µÄ½âÂëÑÓ³Ù¡£
»»¾ä»°Ëµ£¬ÓÃÓÚÖ´ÐÐÖ¸ÁîµÄÿ¸öʱÖÓÖÜÆÚ£¬¶¼¿ÉÒÔÓÃÀ´½âÂëºóÐøÖ¸ÁîµÄÒ»¸öǰ׺¡£ "ÒõӰЧӦ"¶ÔÓÚ±»ÕýÈ·Ô¤²âµÄ·ÖÖ§Ò²ÓÐЧ¡£
ÈκÎÖ´ÐÐʱ¼ä³¬¹ýÒ»¸öʱÖÓÖÜÆÚµÄÖ¸ÁÒÔ¼°ÈκÎÒòΪAGIЧӦ¡¢cache²»ÃüÖС¢Êý¾Ýû¶ÔÆëµÈµÈÀíÓɵÄÑÓ³Ù£¨³ýÁ˽âÂëÑӳٺͷÖÖ§Ô¤²âʧ°Ü£©£¬ËüÃǶ¼ÓÐ"ÒõӰЧӦ"¡£
PMMXÒ²ÓС°ÒõӰЧӦ¡±£¬µ«ÊÇ»úÖÆ¸üÏȽø¡£
ÒѾ½âÂëÍê±ÏµÄÖ¸Áî±»´æÔÚÒ»¸ö¶ÔÓû§Í¸Ã÷µÄÏȽøÏȳö£¨FIFO£©µÄ»º´æÀïÃæ£¬¸Ã»º´æÄÜ´æ4ÌõÖ¸Áȡ»º´æÖеÄÖ¸ÁîûÓÐÑÓ³Ù¡£Ò»µ©Ö¸Áî½âÂëÍê±Ï¿ªÊ¼Ö´ÐУ¬¾Í±»Å׳ö»º´æ¡£
µ±Ö¸ÁîµÄÖ´ÐÐËÙ¶ÈÂýÓÚÖ¸ÁîµÄ½âÂëËÙ¶Èʱ£¬»º´æ»áÌîÂú¡ª¡ªÒ²¾ÍÊǵ±ÄãÓÐδÅä¶ÔµÄÖ¸Áî»ò¶àʱÖÓµÄÖ¸Áîʱ¡£
µ±Ö¸ÁîµÄÖ´ÐÐËÙ¶È´óÓÚ½âÂëËÙ¶Èʱ£¬»º´æ»á¿Õ³ö¡ª¡ªÒ²¾ÍÊǵ±ÄãÓÐÒòΪǰ׺Ե¹ÊµÄ½âÂëÑÓ³Ù¡£ ÔÚ·ÖÖ§Ô¤²âʧ°ÜµÄʱºò£¬»º´æ±»ÇåÏ´¡£
ÔÚµÚ2ÌõÖ¸ÁîûÓÐǰ׺ÇÒûÓÐÒ»ÌõÖ¸ÁîµÄ³¤¶È³¬¹ý7¸ö×Ö½ÚµÄǰÌáÏ£¬Ö¸ÁîcacheÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ¿ÉÒÔ·ÅÈëÁ½ÌõÖ¸ÁU¡¢VÁ½¸öÁ÷Ë®Ïß¿ÉÒÔÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ¸÷½ÓÊÜÆäÖеÄÒ»ÌõÖ¸ÁîÈ¥Ö´ÐС£
±ÈÈ磺
CLD
REP MOVSD
CLDÖ¸ÁÁ½¸öʱÖÓÖÜÆÚ£¬Òò´ËÑÚ¸ÇÁËREPǰ׺µÄ½âÂëÑÓ³Ù¡£Èç¹ûCLDÔ¶ÀëREP
MOVSDµÄ»°£¬ÕâÆ¬´úÂ뽫»¨²»Ö¹Ò»¸öÖÜÆÚ¡£
CMP DWORD
PTR [EBX]£¬0 / MOV EAX£¬0 / SETNZ AL
ÓÉÓÚCMPÖ¸ÁîÊÇÒ»Ìõ¶Á/дָÁÒò´Ë»¨Á½¸öÖÜÆÚ¡£ÔÚCMPµÄÁ½¸öÖÜÆÚÖУ¬SETNZÖ¸ÁîµÄǰ׺0FH±»½âÂ룬Òò´ËÔÚPPlain»úÉÏ£¬½âÂëÑÓ³Ù±»ÑÚ¸ÇÁË£¨ÔÚPMMXÉÏûÕâ¸öÎÊÌ⣬ÒòΪËü¶Ô0FHǰ׺ûÓнâÂëÑÓ³Ù£©¡£
ÔÚPPro£¬PII£¬PIII»úÉϵÄǰ׺µÄ¸±×÷Óã¬ÔÚ14ÕÂÃèÊö¡£
13. PPro£¬PIIºÍPIIIÁ÷Ë®Ïß×ÛÊö
PPro£¬PIIºÍPIII΢´¦ÀíÆ÷µÄÖÆÔ칤ÒÕÔÚIntelµÄ¸÷ÖÖÖ¸ÄÏÊÖ²áÖÐÓкܺõĽâÊͺͲåͼ¡£ÎªÁËÀí½âÕâЩ´¦ÀíÆ÷ÊÇÔõô¹¤×÷µÄ£¬ÍƼöÄãѧϰÕâЩ²ÄÁÏ¡£ÔÚ´Ë£¬ÎÒÖ»¶Ô´úÂëÓÅ»¯Ïà¹Ø²¿·Ö×÷¼òÒªÃèÊö¡£
Ö¸Áî´úÂë´ÓÖ¸ÁîcacheµÄ16×Ö½Ú¶ÔÆëµÄ¿éÖÐÈ¡µ½Ò»¸öÁ½±¶´óµÄ»º´æÖУ¬¸Ã»º´æÄܹ»ÈÝÄÉÁ½¸ö16×ֽڵĿ顣´Ó¸Ã»º´æ´«µÝµ½½âÂëÆ÷µÄÖ¸Áî¿éÎÒ³ÆÖ®Îªifetch¿é(Ö¸ÁîЯ´ø¿é)¡£ifetch¿éÒ»°ãÊÇ16×Ö½Ú£¬µ«Ã»ÓÐ¶ÔÆë¡£Á½±¶»º´æµÄÄ¿µÄ¾ÍÊÇÏ£ÍûÄܹ»¶Ô¿çÔ½16×ֽڱ߽çµÄÖ¸ÁîÒ²ÄܽâÂë(16×ֽڱ߽çÊÇÖ¸Äܹ»±»16Õû³ýµÄµØÖ·)¡£
Ö¸Á¶È½âÂëÆ÷¾ö¶¨ÁËÿ¸öÖ¸ÁîµÄ¿ªÊ¼ºÍ½áÊøÎ»Ö㬺ͽô½ÓµÄÏÂÒ»ÌõÖ¸Áifetch¿é¾ÍÊǸù¾ÝÖ¸Á¶È½âÂëµÄ½á¹ûÀ´¶¨Î»µÄ¡£
ÓÐÈý¸ö½âÂëÆ÷£¬Òò´ËÄã¿ÉÒÔÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ½âÂëÈýÌõÖ¸Áî¡£ ÔÚͬһ¸öʱÖÓÖÜÆÚÄÚ½âÂëµÄÖ¸Áî(×î¶àÈýÌõ)±»³ÆÎªÒ»¸ö½âÂë×é¡£
½âÂëÆ÷½«Ö¸Áî·ÒëΪ΢²Ù×÷¡¢Ð¡Ð͵Ä΢ָÁî¡£¼òµ¥µÄÖ¸ÁîÖ»²úÉúÒ»Ìõ΢Â룬¸´ÔÓµÄÖ¸Áî¿ÉÄܲúÉú¼¸Ìõ΢Âë¡£ ±ÈÈçADD
EAX£¬[MEM]Ö¸Áî½âÂëΪÁ½Ìõ΢Â룺һÌõ¶ÁÄÚ´æ²Ù×÷Êý£¬Ò»Ìõ×ö¼Ó·¨¡£ °ÑÖ¸Áî·Ö½âΪ΢ÂëµÄÄ¿µÄÊÇʹÒÔºóµÄϵͳ´¦Àí¸üΪÓÐЧ¡£
Èý¸ö½âÂëÆ÷±»³ÆÎªD0£¬D1ºÍD2¡£D0Äܹ»´¦ÀíËùÓеÄÖ¸Áî¡£D1ºÍD2Ö»ÄÜ´¦ÀíÄÇЩֻ²úÉúÒ»Ìõ΢ÂëµÄ¼òµ¥Ö¸Áî¡£
´Ó½âÂëÆ÷³öÀ´µÄ΢Âë¾¹ýÒ»¸ö¶ÌµÄ¶ÓÁе½´ï¼Ä´æÆ÷·ÖÅä±í(RAT)¡£
΢ÂëµÄÖ´ÐÐÔÚÁÙʱ¼Ä´æÆ÷ÖнøÐУ¬ÒÔºóÔÙд»Øµ½ÓÀ¾Ã¼Ä´æÆ÷ÖîÈçEAX£¬EBXµÈµÈ¡£ RATµÄÄ¿µÄÊǸøÎ¢Âë·ÖÅäÁÙʱ¼Ä´æÆ÷£¬²¢ÇÒʹ¼Ä´æÆ÷ÖØÃüÃû³ÉΪ¿ÉÄÜ(¼ûºóÐøÕ½Ú)
ÔÚRATÖ®ºó£¬Î¢Âë½øÈëÁËÂÒÐò»º´æ(reorder
buffer£¬ROB)¡£ ROBµÄ×÷ÓÃÊÇÂÒÐòÖ´ÐС£ ÔÚ΢ÂëÐèÒªµÄ²Ù×÷Êý²»¿ÉÓÃ֮ǰ£¬Ëü½«´ôÔÚ±£ÁôÕ¾¡£
µ±ÒòÎªÇ°ÃæµÄ΢Âë²úÉúµÄ½á¹û(×÷ΪºóÃæÄ³Ìõ΢ÂëµÄ²Ù×÷Êý)»¹Ã»Íê³Éʱ£¬ROBÔÚÐèÒª¸Ã²Ù×÷ÊýµÄ΢ÂëµÈ´ýÆÚ¼ä£¬»áÕÒÁíÒ»ÌõºóÃæµÄ΢ÂëÀ´Ö´ÐÐ(ǰÌáÊÇÂß¼ÕýÈ·)£¬´Ó¶ø½ÚÊ¡ÁËʱ¼ä¡£
¾ÍÐ÷̬µÄ΢Âë±»ËÍÈëÖ´Ðе¥Ôª¡£Ö´Ðе¥ÔªÓÐÎå¸ö¶Ë¿Ú£º¶Ë¿Ú0ºÍ1ÄÜ´¦ÀíËãÊõÔËËã£¬Ìø×ªµÈµÈ£»¶Ë¿Ú2¸ºÔðËùÓеÄÄÚ´æ¶Á£»¶Ë¿Ú3¼ÆË㽫Ҫ±»Ð´µÄÄÚ´æµØÖ·£»¶Ë¿Ú4½øÐÐÄÚ´æÐ´¡£
ÔÚROBÖУ¬Ò»Ìõ±»Ö´ÐйýµÄÖ¸Áî±»±ê¼ÇΪ½«ÒªÒýÍË¡£ È»ºóËü½øÈëÒýÍËÕ¾¡£
ÔÚÕâÀ΢ÂëÓùýµÄÁÙʱ¼Ä´æÆ÷µÄÄÚÈÝҪд»ØÓÀ¾Ã¼Ä´æÆ÷¡£ ËäȻ΢ÂëÄܹ»±»ÂÒÐòÖ´ÐУ¬µ«±ØÐëÓÐÐòÒýÍË¡£
ºóÐøÕ½ÚÖУ¬ÎÒ»áÏêϸµØÃèÊöÁ÷Ë®ÏßÖÐÿһ²½µÄÍÌÍÂÁ¿ÈçºÎ½øÐÐÓÅ»¯¡£
14. Ö¸Áî½âÂë(PPro£¬PIIºÍPIII)
ÔÚ´ËÎÒÏȽ²Ö¸Áî½âÂ룬ȻºóÔÙ½²È¡Ö¸Áî¡£ ÒòΪҪÀí½âȡָÁîʱ·¢ÉúµÄÑÓ³Ù£¬Äã±ØÐëÏÈÖªµÀ½âÂëÆ÷µÄ¹¤×÷ÔÀí¡£
Ö»ÓÐÔÚһЩÌõ¼þÂú×ãµÄÇé¿öÏ£¬½âÂëÆ÷²ÅÄÜÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ½âÂë3ÌõÖ¸Áî¡£
½âÂëÆ÷D0Äܹ»´¦ÀíËùÓеÄÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ×î¶à²úÉú4Ìõ΢ÂëµÄÖ¸Áî¡£ ½âÂëÆ÷D1ºÍD2Ö»ÄÜ´¦ÀíÄÇЩֻ²úÉú1Ìõ΢ÂëµÄÖ¸Á¶øÇÒÄÇЩָÁ¶È²»Äܳ¬¹ý8×Ö½Ú¡£
¸ÅÊöͬһ¸öʱÖÓÖÜÆÚÄÚ½âÂë2»ò3ÌõÖ¸ÁîµÄ¹æÔòÈçÏÂ:
*µÚÒ»ÌõÖ¸Áî(ÓÉD0½âÂë)²úÉúµÄ΢Âë²»Äܳ¬¹ý4Ìõ
*µÚ¶þ¡¢ÈýÁ½ÌõÖ¸Áî¶¼Ö»ÄܲúÉú1Ìõ΢Âë
*µÚ¶þ¡¢ÈýÁ½ÌõÖ¸Á¶È¶¼²»Äܳ¬¹ý8¸ö×Ö½Ú
*ÕâЩָÁî¶¼ÒªÔÚͬһ¸ö16×Ö½ÚµÄifetch¿éÖÐ(¼ûÏÂÒ»ÕÂ)
ÔÚD0ÖеÄÖ¸Á¶ÈûÓÐÏÞÖÆ(¾¡¹ÜIntelÊÖ²áÖÐÌáµ½ÁËһЩ)£¬Ö»ÒªÕâÈýÌõÖ¸ÁîÄÜ·ÅÈëÒ»¸ö16×Ö½ÚµÄifetch¿é¡£
²úÉú4ÌõÒÔÉÏ΢ÂëµÄÖ¸ÁîÐèÒª2¸ö»ò¸ü¶àʱÖÓÖÜÆÚÀ´½âÂ룬²¢ÇÒÔÚÕâ¸ö¹ý³ÌÖÐûÓÐÆäËüµÄÖ¸Áî¿ÉÒÔ²¢ÐнâÂë¡£
¸ù¾ÝÒÔÉϹæÔò£¬ÎÒÃǵóö½áÂÛ:Ò»¸öʱÖÓÖÜÆÚÄÚ½âÂëÆ÷ÖÁ¶à²úÉú6Ìõ΢Âë(Èç¹ûµÚÒ»ÌõÖ¸Áî²úÉú4Ìõ΢Â룬ºóÁ½ÌõÖ¸Áî¸÷²úÉú1Ìõ΢Âë);ÖÁÉÙ²úÉú2Ìõ΢Âë(Èç¹ûËùÓÐÖ¸Áî¶¼²úÉú2Ìõ΢Â룬ÕâʱD1ºÍD2û·¨ÓÃ)¡£
ΪÁË´ïµ½×î´óÍÌÍÂÁ¿£¬ÍƼöÄã°Ñ´úÂë×éÖ¯³É4-1-1ģʽ£º²úÉú2-4Ìõ΢ÂëµÄÖ¸Áî¿ÉÒÔ"Ãâ·Ñ"¸½´ø2Ìõ²úÉú1Ìõ΢ÂëµÄ¼òµ¥Ö¸ÁijÖÖÒâÒåÉϲ»Ôö¼Ó½âÂëʱ¼ä£¬±ÈÈç:
MOV EBX£¬ [MEM1] ; 1Ìõ΢Âë (D0)
INC EBX
; 1Ìõ΢Âë (D1)
ADD EAX£¬ [MEM2] ; 2Ìõ΢Âë (D0)
ADD
[MEM3]£¬ EAX ; 4Ìõ΢Âë (D0)
½âÂëÒª»¨È¥3¸öʱÖÓ¡£ ÖØ×é´úÂëʹËüÃǽøÈëÁ½¸ö½âÂë×é¿ÉÒÔ½Úʡһ¸öÖÜÆÚ:
ADD EAX£¬ [MEM2] ; 2Ìõ΢Âë (D0)
MOV EBX£¬ [MEM1] ; 1Ìõ΢Âë (D1)
INC EBX
; 1Ìõ΢Âë (D2)
ADD [MEM3]£¬ EAX ; 4Ìõ΢Âë (D0)
ÏÖÔÚ½âÂëÆ÷ÔÚ2¸öʱÖÓÖÜÆÚÄÚ²úÉú8Ìõ΢Â룬Ӧ¸Ã±È½ÏÂúÒâÁË¡£ÒòΪÁ÷Ë®ÏߵĺóÐø½×¶ÎÖ»ÄÜÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ´¦Àí3Ìõ΢Â룬ËùÒÔ´óÓÚ3Ìõ/ÖÜÆÚµÄ½âÂëÍÌÍÂÂÊÄã¾Í¿ÉÒÔÈÏΪ½âÂë²»ÊÇÆ¿¾±ÁË¡£È»¶ø£¬¾ÍÏñºóÃæµÄÕ½ÚÃèÊöµÄÄÇÑù£¬È¡Ö¸Áî»úÖÆµÄ¸´ÔÓÐÔ¿ÉÄÜ»áʹ½âÂëÑÓ³Ù£¬Òò´Ë°²È«Æð¼û£¬ÄãµÄÄ¿±êÊÇÿ¸öʱÖÓÖÜÆÚµÄ½âÂëÍÌÍÂÂÊ´óÓÚ3¡£
Äã¿ÉÒÔÔÚ29ÕµÄÁбíÖвé³ö¸÷ÖÖÖ¸Áî²úÉúµÄ΢ÂëÊý¡£
ÔÚ½âÂëʱ£¬Ç°×ºÒ²¿ÉÄÜ´øÀ´³Í·£¡£ Ö¸ÁîÄܹ»ÓÐÕâÑùһЩǰ׺:
* ²Ù×÷Êý³ß´çǰ׺¡£
µ±ÄãÔÚ32λ»·¾³ÖÐÓÐÒ»¸ö16λ²Ù×÷Êýʱ½«Óõ½£¬·´Ö®ÒàÈ»(³ýÁËÄÇЩ²Ù×÷ÊýÖ»ÄÜÓÐÒ»ÖֳߴçµÄÖ¸Á±ÈÈçFNSTSW AX)¡£
µ±Ö¸ÁîÓÐÒ»¸ö16»ò32λµÄÁ¢¼´²Ù×÷Êýʱ£¬²Ù×÷Êý³ß´çǰ׺»á´øÀ´¼¸¸öÖÜÆÚµÄ³Í·££¬ÒòΪ²Ù×÷ÊýµÄ³¤¶È±»Ç°×º¸Ä±äÁË¡£ ±ÈÈç:
ADD BX£¬ 9
;
ÒòΪÁ¢¼´²Ù×÷ÊýÊÇ8룬¹ÊûÓгͷ£
MOV WORD PTR
[MEM16]£¬ 9 ; ÒòΪ²Ù×÷ÊýÊÇ16룬Óгͷ£
ºóÒ»ÌõÖ¸ÁîÓ¦¸Ã±»Ìæ»»³É:
MOV EAX£¬ 9
MOV WORD PTR [MEM16]£¬ AX
; û³Í·££¬ÒòΪûÓÐÁ¢¼´Êý
*
µØÖ·³ß´çǰ׺¡£µ±ÄãÔÚ16λģʽÏÂÓÃ32λµØÖ·Ê±Óõ½£¬·´Ö®ÒàÈ»¡£ËüºÜÉÙÓõ½£¬Ò»°ãÓ¦¸Ã±ÜÃ⡣ÿµ±ÄãÓÐÒ»¸öÏÔʽµÄÄÚ´æ²Ù×÷Êýʱ(ÉõÖÁÓÐʱûÓÐÆ«ÒÆÁ¿)£¬µØÖ·³ß´çǰ׺µ¼ÖÂÒ»´Î³Í·£¡£ÒòΪָÁî±àÂëÖÐÖ¸Ã÷r/mµÄλ±»Ç°×º¸Ä±äÁË¡£
Ö»ÓÐÒþʽÄÚ´æ²Ù×÷ÊýµÄÖ¸Á±ÈÈç´®²Ù×÷Ö¸Á¼´Ê¹ÓÐÁ˵ØÖ·³ß´çǰ׺ҲûÓгͷ£¡£
* ¶Îǰ׺¡£
µ±ÄãÐèÒª¶¨Î»·ÇĬÈϵÄÊý¾Ý¶ÎʱÐèÒªÓõ½¡£ ÔÚPPro£¬PIIºÍPIIIÉÏûÓÐÒò¶Îǰ׺¶ø´øÀ´µÄ³Í·£¡£
*
ÖØ¸´Ç°×ººÍËøÇ°×ºÔÚ½âÂëʱûÓгͷ£¡£
* µ±ÄãµÄǰ׺¶àÓÚÒ»¸öʱ×ÜÊÇÓгͷ£¡£
Ò»°ã³Í·£ÊÇÿ¸öǰ׺һ¸öÖÜÆÚ¡£
15. ȡָÁî(PPro£¬PIIºÍPIII)
Ö¸Áî´ÓÖ¸ÁîcacheµÄ16×Ö½Ú¶ÔÆëµÄ¿éÖÐÈ¡³ö£¬·ÅÖÃÔÚ´óСÊÇ¿éµÄÁ½±¶µÄ»º´æÄÚ¡£
È»ºóÖ¸Áî´Ó"Á½±¶»º´æ"È¡³ö£¬·ÅÔÚÒ»¸öͨ³£ÊÇ16×Ö½Ú£¬µ«²»ÐèÒª16¶ÔÆëµÄ¿éÖд«µÝ¸ø½âÂëÆ÷¡£ ÎÒÃdzÆÕâЩ¿éÊÇ"ifetch"(Ö¸ÁîЯ´ø¿é)¡£
Èç¹ûÒ»¸öifetchÊÇ¿ç 16 ×ֽڱ߽çµÄ£¬ÄÇôËüÐèÒª´Ó"Á½±¶»º´æ"µÄÁ½¸ö¿éÖжÁ³ö¡£
Òò´Ë"Á½±¶»º´æ"±»Éè¼Æ³ÉÓÐÁ½¸ö¿é£¬Ä¿µÄ¾ÍÊÇΪÁËÄÜ¿çÔ½16×ֽڱ߽çȡָÁî¡£
"Á½±¶»º´æ"ÄÜÔÚÒ»¸öʱÖÓÖÜÆÚÄÚȡһ¸ö16×ֽڵĿ飬²¢ÄÜÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ²úÉúÒ»¸öifetch¿é¡£
Ò»°ãifetch¿é³¤16×Ö½Ú£¬µ«¿éÖÐÓб»Ô¤²âµ½µÄ×ªÒÆÊ±£¬¿ÉÄܶÌÓÚ16×Ö½Ú(¹ØÓÚ·ÖÖ§Ô¤²â£¬¼û22ÕÂ)¡£
²»ÐÒµÄÊÇ£¬"Á½±¶»º´æ"»¹Ã»Óдóµ½Äܹ»ÎÞÑÓ³ÙµØÈ¡³öÌø×ªÖ¸ÁîÖÜΧµÄÖ¸Áî(Òª°üÀ¨²»·¢Éú×ªÒÆµÄ´úÂëºÍ·¢Éú×ªÒÆºóµÄÄ¿µÄ´úÂë)¡£
Èç¹ûÒ»¸ö´©Ô½16×ֽڱ߽çµÄifetch¿é°üÀ¨ÁËÌø×ªÖ¸ÁΪÁ˲úÉúÕâ¸öifetch¿é£¬"Á½±¶»º´æ"ÐèÒª´æ´¢Á½¸öÁ¬ÐøµÄ16×Ö½Ú¶ÔÆëµÄ´úÂë¿é£»Èç¹û×ªÒÆÖ¸ÁîÖ®ºóµÄµÚÒ»ÌõÖ¸Áî´©Ô½ÁË16×ֽڱ߽磬ÄÇôΪÁ˲úÉúÒ»¸öÕýÈ·µÄifetch¿é£¬"Á½±¶»º´æ"ÐèÒªÔØÈëÁ½¿éеÄ16-×Ö½Ú´úÂë¿é¡£
ÕâÒâζ×ÅÔÚ×Çé¿öÏ£¬×ªÒÆÖ¸ÁîÖ®ºóµÚÒ»ÌõÖ¸ÁîµÄ½âÂë¿ÉÄÜÒª±»ÑÓ³ÙÁ½¸öÖÜÆÚ¡£
ÒòΪ´©Ô½16±ß½çµÄifetch¿é°üº¬ÁËÌø×ªÖ¸ÁÄãÒª¸¶³ö´ú¼Û£»×ªÒÆÖ¸ÁîºóµÄµÚÒ»ÌõÖ¸Áî´©¹ý16±ß½ç£¬Ò²µÃ¸¶³ö´ú¼Û¡£
µ«Èç¹ûÔÚifetchÖÐÄãÓжàÓÚÒ»¸ö½âÂë×é°üº¬Ìø×ªÖ¸Áî?£¬ÄÇôÄãÄܵõ½½±ÉÍ¡£
ÒòΪÓпçÔ½16±ß½çµÄ×ªÒÆÖ¸ÁîºóµÄµÚÒ»ÌõÖ¸ÁîµÄ´æÔÚ£¬Ê¹µÃ"Á½±¶»º´æ"ÄÜÓжîÍâµÄʱ¼äÔ¤ÏÈ»ñÈ¡1~2¿é16-×ֽڵĴúÂë¿é¡£ °´ÕÕÏÂ±í£¬¸Ã½±ÉÍÄܲ¹³¥Ëðʧ¡£
Èç¹û"Á½±¶»º´æ"Ö»»ñÈ¡ÁË×ªÒÆÖ¸ÁîºóµÄ´úÂëµÄÒ»¸ö16-×ֽڿ飬ÄÇô²úÉúµÄµÚÒ»¸öifetch¿éÓë¸Ã¿éÏàͬ£¬Ò²¾ÍÊÇ16×Ö½Ú¶ÔÆë¡£
»»¾ä»°Ëµ£¬×ªÒÆÖ¸ÁîºóµÄµÚÒ»¸öifetch¿é½«²»»á´ÓµÚÒ»ÌõÖ¸Áʼ£¬¶øÊÇ´ÓÄܱ»16Õû³ýµÄ¡¢ÓëÏÈǰµØÖ·×î½Ó½üµÄµØÖ·¿ªÊ¼¡£
Èç¹û"Á½±¶»º´æ"ÓÐʱ¼ä¶ÁÈ¡Á½¿é16-×ֽڿ飬ÄÇôеÄifetch¿é¿ÉÄÜ´©¹ý16×ֽڱ߽磬²¢ÇÒ´Ó×ªÒÆÖ¸ÁîºóµÚÒ»ÌõÖ¸Áʼ¡£ ϱí¸ÅÊöÁËÕâ¸ö¹æÂÉ:
|
ifetch¿éÖаüº¬Ìø×ªµÄ½âÂë×éµÄ¸öÊý |
¸Ãifetch¿éÖÐÊÇ·ñÓÐ16×ֽڱ߽ç |
Ìø×ªºóµÄµÚÒ»ÌõÖ¸ÁîÖÐÓÐÎÞ16×Ö½ÚÏß |
½âÂëÑÓ³Ù |
×ªÒÆÖ¸ÁîºóµÚÒ»¸öifetch¿éµÄ¶ÔÆë·½Ê½ |
|
1 |
0 |
0 |
0 |
16×Ö½Ú¶ÔÆë |
|
1 |
0 |
1 |
1 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
1 |
1 |
0 |
1 |
16×Ö½Ú¶ÔÆë |
|
1 |
1 |
1 |
2 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
2 |
0 |
0 |
0 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
2 |
0 |
1 |
0 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
2 |
1 |
0 |
0 |
16×Ö½Ú¶ÔÆë |
|
2 |
1 |
1 |
1 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
3 or more |
0 |
0 |
0 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
3 or more |
0 |
1 |
0 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
3 or more |
1 |
0 |
0 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
|
3 or more |
1 |
1 |
0 |
´ÓµÚÒ»ÌõÖ¸Áʼ |
Ìø×ªÊ¹È¡Ö¸Áî·¢ÉúÑÓ³Ù£¬Òò´ËʹµÃÒ»¸öÑ»·µÄÿ´Îµþ´ú×ÜÊÇ»¨ÖÁÉÙÁ½¸ö¶àÖÜÆÚ£¬Õâ±ÈÑ»·ÖеÄ16×ֽڱ߽çÏßµÄÊýĿҪ¶à¡£
ȡָÁî»úÖÆµÄÁíÒ»¸öÎÊÌâÊÇÔÚǰһ¸öifetchºÄ¾¡Ö®Ç°£¬Ò»¸öеÄifetch¿é²»»á²úÉú¡£
ÿ¸öifetch¿é¿ÉÄܰüº¬¼¸¸ö½âÂë×é¡£ Èç¹ûÒ»¸ö16×Ö½Úifetch¿éµÄ½áÊøÎ»ÖÃÔÚÒ»ÌõÖ¸ÁîÖм䣬ÄÇôÏÂÒ»¸öifetch¿é»á´Ó¸ÃÖ¸ÁîµÄ¿ªÊ¼´¦¿ªÊ¼¡£
¿ÉÄܵϰ£¬ifetch¿éÖеĵÚÒ»ÌõÖ¸Áî×ÜÊǽøÈëD0½âÂëÆ÷£¬ºóÁ½ÌõÖ¸Áî½øÈëD1ºÍD2¡£ ÕâʹµÃD1ºÍD2ûÓб»×î¼ÑÀûÓá£
±ÈÈç´úÂë°´ÕÕÍÆ¼öµÄ4-1-1ģʽ×éÖ¯£¬¼Æ»®Òª½øÈëD1»òD2µÄÖ¸ÁîÕýºÃÊÇij¸öifetch¿éµÄµÚÒ»ÌõÖ¸ÁÄÇô¸ÃÖ¸Áî²»µÃ²»½øÈëD0£¬Ò»¸öʱÖÓÖÜÆÚ¾ÍÕâÑùÀË·ÑÁË¡£
Õâ¿ÉÄÜÊÇÒ»¸öÓ²¼þÉè¼ÆµÄȱÏÝ£¬ÖÁÉÙÊǸö²»ÍêÃÀµÄÉè¼Æ¡£ Ëüµ¼ÖÂÁ˽âÂ뿪ÏúºÜ´ó³Ì¶ÈÉÏÈ¡¾öÓÚµÚÒ»¸öifetch¿é¿ªÊ¼µÄλÖá£
Èç¹û½âÂëËÙ¶ÈÒªÇó¿Á¿Ì£¬ÄãÏë±ÜÃâÕâЩÎÊÌ⣬ÄÇôÄã±ØÐëÖªµÀÿ¸öifetch¿é¿ªÊ¼µÄλÖᣠÕâÊǸöÏ൱·¦Î¶µÄ¹¤×÷¡£
Ê×ÏÈ£¬ÎªÁËÖªµÀ16×ֽڱ߽çÏßµÄλÖã¬ÄãÐèÒª½«´úÂë¶Î°´½Ú¶ÔÆë£¨°´ 16 ¶ÔÆë£©¡£
È»ºó²é¿´»ã±àÂëÊä³öÁÐ±í£¬ÖªµÀÿһÌõÖ¸ÁîµÄ³¤¶È(ÍÆ¼öÄãѧϰһÏÂÖ¸ÁîµÄ±àÂ뷽ʽ£¬ÕâÑù¾Í¿ÉÔ¤ÖªÖ¸ÁîµÄ³¤¶È)¡£
µ±ÄãµÃµ½ÁËÒ»¸öifetch¿é¿ªÊ¼µÄλÖú󣬿ÉÒÔͨ¹ýÕâ¸ö·½·¨µÃµ½Ï¸öifetch¿é¿ªÊ¼µÄλÖ㺼ƸÿéΪ16×Ö½Ú£¬Èç¹ûËüµÄ½áÊøÎ»ÖÃÔÚÖ¸ÁîµÄ±ß½çÏßÉÏ£¬ÄÇôϸöifetch¿é¾Í´ÓÕâ¸öλÖÿªÊ¼£»Èç¹ûËüµÄ½áÊøÎ»ÖÃÔÚijÌõÖ¸ÁîµÄÖм䣬ÄÇôϸöifetch¿é´Ó¸ÃÖ¸ÁîµÄÆðʼ´¦¿ªÊ¼(±¾·½·¨Ö»¹ØÐÄÖ¸ÁîµÄ³¤¶È£¬²»¹ØÐÄÖ¸Áî²úÉú¶àÉÙ΢ÂëºÍËüÃÇ×öʲô)¡£
¶ÔËùÓдúÂëÓô˷½·¨£¬Äã¿ÉÒÔ±ê³öÿ¸öifetch¿é¿ªÊ¼µÄλÖá£
ÏÖÔÚΨһµÄÎÊÌâÊÇÈçºÎÖªµÀÆðʼµÄλÖã¬ÒòΪ֪µÀÁËÒ»¸öifetch¿é¿ªÊ¼µÄλÖ㬾ͿÉÒÔÖªµÀËùÓкóÐøifetch£¬Òò´Ë±ØÐëÖªµÀµÚÒ»¸öifetchµÄ¿ªÊ¼Î»Öá£
ÒÔÏÂÊÇÖ¸µ¼·½Õë:
*°´ÕÕÇ°ÃæµÄ±í£¬jump£¬call»òreturnºóµÄµÚÒ»¸öifetch¿é¼È¿ÉÄÜ´ÓµÚÒ»ÌõÖ¸Áʼ£¬Ò²¿ÉÄÜ´ÓÓëÏÈǰµØÖ·×î½Ó½üµÄ16×ֽڱ߽çÏß¿ªÊ¼¡£
µ«Èç¹ûµÚÒ»ÌõÖ¸ÁîÊÇ¶ÔÆëµÄ¡ª¡ªÊ¹Ëü´Ó16×ֽڱ߽çÏß¿ªÊ¼£¬ÄÇôÄã¾ÍÄܱ£Ö¤µÚÒ»¸öifetch¿é´ÓÕâÀ↑ʼ¡£ Òò´Ë£¬ÄãÓ¦¸ÃÊ¹ÖØÒªµÄ×Ó¹ý³ÌÈë¿ÚºÍÑ»·Èë¿Ú°´ 16
¶ÔÆë¡£
*Èç¹û´æÔÚÁ½ÌõÁ¬ÐøµÄÖ¸ÁîËüÃǵij¤¶ÈºÍ´óÓÚ16£¬ÄÇôÄãÄܱ£Ö¤µÚ¶þÌõÖ¸ÁîÎÞ·¨ÓëµÚÒ»ÌõÖ¸Áî·Å½øÍ¬Ò»¸öifetch¿é£¬½á¹û¾ÍÊÇ×ÜÄÜÓÐÒ»¸öifetch¿é´ÓµÚ¶þÌõÖ¸Áʼ¡£
ÒÔ´Ëifetch¿éΪ»ù´¡£¬Äã¾ÍÄÜÕÒ³öºóÐøifetch¿éµÄ¿ªÊ¼Î»Öá£
*·ÖÖ§Ô¤²âʧ°ÜºóµÄµÚÒ»¸öifetch¿é×ÜÊÇ´Ó16×ֽڱ߽çÏß¿ªÊ¼¡£ °´ÕÕ22.2½ÚµÄÀíÂÛ£¬Ò»¸öÖØ¸´´ÎÊý´óÓÚ5´ÎµÄÑ»·µ±ËüÍ˳öʱ×ÜÓÐÒ»´ÎÔ¤²âʧ°Ü¡£
Òò´ËÕâÖÖÑ»·ºóµÄµÚÒ»¸öifetch¿é´ÓÓëÏÈǰµØÖ·×î½Ó½üµÄ16×ֽڱ߽çÏß¿ªÊ¼¡£
*ÆäËüÐòÁл¯Ê¼þ£¨²»¿É²¢ÐÐʼþ£©Ò²»áʹµÃÏÂÒ»¸öifetch¿é´Ó16×ֽڱ߽çÏß¿ªÊ¼¡£
ÀàËÆÊ¼þ°üÀ¨Öжϣ¬Òì³££¬×ÔÐ޸ĴúÂëºÍCPUID£¬IN£¬OUTµÈÐòÁл¯Ö¸Áî¡£
ÄãÏÖÔÚÒ»¶¨ÐèÒªÒ»¸öʵÀýÁ˰É:
µØÖ·
Ö¸Áî
³¤¶È
΢ÂëÊý ¹À¼ÆÒª½øÈëµÄ½âÂëÆ÷
----------------------------------------------------------------------
1000h MOV ECX£¬ 1000
5
1
D0
1005h LL: MOV [ESI]£¬ EAX
2
2
D0
1007h MOV [MEM]£¬ 0
10
2
D0
1011h LEA EBX£¬ [EAX+200]
6
1
D1
1017h MOV BYTE PTR [ESI]£¬ 0
3 2
D0
101Ah BSR EDX£¬ EAX
3
2
D0
101Dh MOV BYTE PTR [ESI+1]£¬0
4 2
D0
1021h DEC ECX
1
1
D1
1022h JNZ LL
2
1
D2
ÎÒÃǼٶ¨µÚÒ»¸öifetch¿é´Ó1000hµØÖ·¿ªÊ¼µ½1010h½áÊø¡£½áÊøÎ»ÖÃÔÚMOV
[MEM]£¬0Ö¸ÁîÖм䣬Òò´Ëϸöifetch¿é´Ó1007h¿ªÊ¼µ½1017h½áÊø¡£
½áÊøÎ»ÖÃÔÚÖ¸Áî±ß½çÉÏ£¬Òò´ËµÚÈý¸öifetch¿é´Ó1017h¿ªÊ¼£¬¸²¸ÇÁËÊ£ÓàµÄÑ»·¡£ ½âÂ뻨ȥµÄʱÖÓÖÜÆÚµÈÓÚD0Ö¸ÁîµÄÊýÄ¿£¬ÔÚLLÑ»·ÖÐÊÇÿ´Îµþ´ú5¸öÖÜÆÚ¡£
×îºóÒ»¸öifetch¿é°üÀ¨ÁËÈý¸ö½âÂë×飬¸²¸ÇÁË×îºóÎåÌõÖ¸Á¶øÇÒ´©Ô½ÁË16×ֽڱ߽ç(1020h)¡£
¸ù¾ÝÕâЩÌõ¼þ²é¿´Ç°ÃæµÄ±í£¬ÎÒÃÇÖªµÀÌø×ªºóµÄµÚÒ»¸öifetch¿é½«´ÓÌø×ªºóµÄµÚÒ»ÌõÖ¸Áʼ£¬ËüÊÇÔÚ1005hµÄLL±êÇ©£¬µ½1015h½áÊø¡£
½áÊøÎ»ÖÃÔÚLEAÖ¸ÁîÖм䣬Òò´Ëϸöifetch¿é´Ó1011h¿ªÊ¼µ½1021h½áÊø£¬×îºóÒ»¸öifetch¿é´Ó1021h¿ªÊ¼£¬¸²¸ÇÁËʣϵÄÖ¸Áî¡£
ÏÖÔÚLEAÖ¸ÁîºÍDECÖ¸Áî¶¼²»ÐÒµØÔÚifetch¿éµÄ¿ªÍ·£¬ÆÈʹËüÃǽøÈëD0½âÂëÆ÷¡£ ËùÒÔÔÚµÚ¶þ´Îµþ´úÖÐÎÒÃÇÓÐ7ÌõÖ¸ÁîÔÚD0£¬½âÂ뽫»¨È¥7¸öÖÜÆÚ¡£
×îºóÒ»¸öifetch¿éÖ»°üº¬Ò»¸ö½âÂë×éÇÒ²»º¬16×ֽڱ߽çÏß¡£ ²é¿´±í¸ñ£¬×ªÒƺóµÄϸöifetch¿é½«´Ó16×ֽڱ߽翪ʼ£¬ËüÊÇ1000h¡£
Õâ¾ÍÓëµÚÒ»´Îµþ´úµÄÇé¿öÏàͬÁË¡£Äã¿ÉÒÔ¿´µ½¸ÃÑ»·½âÂ뻨ȥµÄʱÖÓÖÜÆÚÔÚ5ºÍ7Ö®¼ä½»Ìæ¡£ ÒòΪûÓÐÆäËüµÄÆ¿¾±£¬ËùÒÔÕû¸öÑ»·µþ´ú1000´ÎµÄ»°£¬»¨6000ʱÖÓ½âÂë¡£
Èç¹û¿ªÊ¼µØÖ·ÓÐËù²»Í¬£¬Ê¹µÃÄãÔÚÑ»·µÄµÚÒ»Ìõ»ò×îºóÒ»ÌõÖ¸ÁîÖÐÓÐ16×ֽڱ߽çÏߣ¬ÄÇôҪ»¨8000ʱÖÓ¡£
Èç¹ûÖØÐÂ×é֯ѻ·£¬Ê¹µÃûÓÐD1»òD2Ö¸Áî´¦ÓÚifetch¿éµÄ¿ªÍ·£¬ÄÇô¿ÉÒÔÖ»»¨5000ʱÖÓ¡£
ÉÏÊöʵÀýÊÇÌØÒâ¹¹ÔìµÄ£¬Ê¹µÃȡָÁîºÍÖ¸Áî½âÂëÊÇΨһµÄÆ¿¾±¡£
±ÜÃâÕâÖÖÆ¿¾±µÄ×î¼òµ¥µÄ·½·¨ÊÇ×éÖ¯ÄãµÄ´úÂëʹµÃÿ¸öʱÖÓÖÜÆÚ²úÉú3ÌõÒÔÉÏ΢Â룬ÕâÑùÒ»À´¾¡¹ÜÓÐÕâÀïÃèÊöµÄÖÖÖֳͷ££¬µ«½âÂëÒѲ»ÔÙÊÇÆ¿¾±ÁË¡£
¶ÔÓÚСѻ·ÕâÖÖ·½·¨²»ÊÊÓã¬Äã±ØÐë¶ÔȡָÁîºÍÖ¸Áî½âÂëÕÒ³öÓÅ»¯µÄ°ì·¨¡£
ΪÁ˱ÜÃâ16×ֽڱ߽çÏßÔÚ²»Ï£ÍûµÄµØ·½³öÏÖ£¬·½·¨Ö®Ò»¾ÍÊǸıä³ÌÐòµÄ¿ªÊ¼µØÖ·¡£
¼ÇסʹÄãµÄ´úÂë¶Î°´½Ú¶ÔÆë£¨°´16¶ÔÆë£©£¬ÕâÑùÄã¿ÉÒÔÖªµÀ16×ֽڱ߽çµÄλÖá£
Èç¹ûÄãÔÚÑ»·Ç°Ãæ²åÈëÒ»ÌõALIGN 16ÃüÁÄÇô»ã±àÆ÷»áÓÃNOP»òÕ߯äËüÖ¸ÁîÌî³äµ½×î½üµÄ16×ֽڱ߽硣
´ó¶àÊý»ã±àÆ÷ÓÃXCHG EBX£¬EBXÖ¸Áî×÷Ϊ2-×Ö½ÚÌî³äÖ¸Áî(±»³Æ×÷"2-×Ö½ÚNOP")¡£
Õâ¸ö·½°¸²»ºÃ£¬ÒòΪÔÚ´ó¶àÊý´¦ÀíÆ÷ÉϸÃÖ¸ÁîµÄ»¨·Ñʱ¼ä±ÈÁ½ÌõNOPÖ¸Áî¶à!
Èç¹ûÑ»·Ö´Ðкܶà´Î£¬ÄÇôÔÚÑ»·ÍâµÄÈκÎÖ¸Áî¶ÔËٶȶ¼ÊDz»ÖØÒªµÄ£¬Äã²»±ØÔÚÒâÕâ¸ö²»Ì«ºÃµÄÌî³äÖ¸Áî¡£ µ«Èç¹ûÌî³äÖ¸ÁȥµÄʱ¼äÊÇÖØÒªµÄ£¬ÄÇôÄã¿ÉÒÔÊÖ¹¤Ñ¡ÔñÌî³äÖ¸Áî¡£
×îºÃÑ¡ÔñÄÇЩÓÐÒâÒåµÄÌî³äÖ¸Á±ÈÈçˢмĴæÆ÷¡ª¡ªÎªÁ˱ÜÃâ¼Ä´æÆ÷¶ÁÑÓ³Ù(¼û16.2ÕÂ)¡£
±ÈÈçÄãÓÃEBP¼Ä´æÆ÷Ѱַ£¬µ«ºÜÉÙ¶ÔËüд»Ø£¬ÄÇôÄã¿ÉÒÔÓÃMOV EBP£¬EBP»òÕßADD EBP£¬0×÷ΪÌî³ä£¬¼õÉټĴæÆ÷¶ÁÑӳٵĿÉÄÜÐÔ¡£
Èç¹ûÄãûÓÐÓÐÓõÄÖ¸Á¶øÇÒST(0)ÖÐÓÐÒ»¸öºÏ·¨µÄ¸¡µãÊýÖµ£¬ÄÇôÄã¿ÉÒÔÓÃFXCH ST(0)×÷ΪºÃµÄÌî³ä£¬ÒòΪËü²»¸øÖ´Ðж˿ÚÔö¼ÓÈκθºµ£¡£
»¹ÓеĴëÊ©¾ÍÊÇÖØÐÂ×éÖ¯ÄãµÄÖ¸Áʹifetch±ß½ç²»³öÏÖÔÚÓꦵÄλÖᣠÕâÊǸöÄÑÌ⣬²»ÊÇÒ»Ö±Äܵõ½ÂúÒâµÄ½á¹ûµÄ¡£
»¹ÓÐÄÜ×öµÄÊÇ¿ØÖÆÖ¸ÁîµÄ³¤¶È¡£
ÓÐʱÄãÄÜÌæ»»Ò»ÌõÖ¸ÁîΪÁíÒ»Ìõ³¤¶È²»Í¬µÄÖ¸Áî¡£ Ðí¶àÖ¸Áî¿ÉÒÔÓò»Í¬·½·¨±àÂ룬µÃµ½²»Í¬µÄ³¤¶È¡£
»ã±àÆ÷Ò»°ãÊÇÑ¡Ôñ×î¶Ì°æ±¾µÄÖ¸Áµ«ÓÐʱºòÐèÒªÓ²ÐԵصõ½½Ï³¤°æ±¾µÄÖ¸Áî¡£ ±ÈÈ磬DEC ECX³¤¶ÈÊÇÒ»¸ö×Ö½Ú£¬SUB ECX£¬1ÊÇ3¸ö×Ö½Ú¡£
ÄãÓÃÁËÒÔϼ¼ÇÉ£¬»¹¿ÉµÃµ½Ò»¸ö6×Ö½Ú°æ±¾µÄ´ø³¤ÕûÐÍÁ¢¼´²Ù×÷ÊýµÄÖ¸Áî:
¡¡¡¡¡¡¡¡¡¡¡¡SUB ECX£¬ 9999
¡¡¡¡¡¡¡¡¡¡¡¡ORG
$-4
¡¡¡¡¡¡¡¡¡¡¡¡DD 1
´øÄÚ´æ²Ù×÷ÊýµÄÖ¸Áî¿ÉÒÔÓÃSIB×Ö½Ú¼Ó³¤Ò»¸ö×Ö½Ú£¬µ«×îÈÝÒ×µÄʹָÁî¼Ó³¤Ò»¸ö×ֽڵķ½·¨ÊǼÓÒ»¸öDS:¶Îǰ׺(×Ö½ÚÊÇ3Eh)¡£¡¡´¦ÀíÆ÷ͨ³£½ÓÊܶàÓàµÄÎÞÒâÒåµÄǰ׺(³ýÁËLOCK)£¬Ö»ÒªÖ¸Á¶È²»³¬¹ý15×Ö½Ú¡£¡¡ÉõÖÁûÓÐÄÚ´æ²Ù×÷ÊýµÄÖ¸ÁîÒ²ÄÜÓжÎǰ׺¡£Òò´ËÈç¹ûÄãÏëʹDEC
ECXÖ¸Áî±ä³É2¸ö×Ö½Ú£¬Ð´×÷:
¡¡¡¡¡¡¡¡¡¡¡¡DB 3Eh
¡¡¡¡¡¡¡¡¡¡¡¡DEC ECX
¼Çס:Èç¹ûÖ¸ÁîÓжàÓÚÒ»¸öǰ׺£¬½âÂëʱÄã»á¸¶³ö´ú¼Û¡£¡¡¿ÉÄÜÕâÖÖ´øÓÐÎÞÒâÒåǰ׺µÄÖ¸Áî(ÓÈÆäÊÇÖØ¸´Ç°×ººÍËøÇ°×º)×îºÃÔÚÒÔºó±»Î´À´µÄ´¦ÀíÆ÷ÓÃÀ´×÷ΪеÄÖ¸ÁÒòΪÄÇʱºòµÄ²»»áÔÙÓÐÎÞÓõÄÖ¸Áî´úÂë²úÉú¡£¡¡µ«ÎÒÈÏΪ²»¹ÜÔõô˵£¬¶ÔÈκÎÖ¸ÁîÓöÎǰ׺¶¼Êǰ²È«µÄ¡£
ÓÃÁËÕâЩ·½·¨£¬Ó¦¸ÃÄܹ»Ê¹ifetch¿éµÄ±ß½ç³öÏÖÔÚÄãÏ£ÍûµÄλÖÃÁË¡£¡¡µ±È»ÕâÊÇÒ»¸ö·¦Î¶µÄÄÑÌâ¡£
16£®¼Ä´æÆ÷ÖØÃüÃû(PPro£¬PIIºÍPIII)
16.1¡¡Ïû³ýÒÀÀµ
¼Ä´æÆ÷ÖØÃüÃûÊÇÕâЩ΢´¦ÀíÆ÷²ÉÓõĸ߼¶¼¼Êõ£¬ÎªÁËÏû³ý²»Í¬²¿·Ö´úÂëµÄÖ®¼äµÄÒÀÀµ¡£±ÈÈç:
¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡ MOV EAX£¬ [MEM1]
¡¡¡¡¡¡¡¡¡¡IMUL EAX£¬ 6
¡¡¡¡¡¡¡¡¡¡MOV [MEM2]£¬
EAX
¡¡¡¡¡¡¡¡¡¡MOV EAX£¬ [MEM3]
¡¡¡¡¡¡¡¡¡¡INC EAX
¡¡¡¡¡¡¡¡¡¡MOV [MEM4]£¬
EAX
ÕâÀïµÄ×îºóÈýÌõÖ¸ÁîÊǶÀÁ¢ÓÚ¿ªÊ¼µÄÈýÌõÖ¸ÁîµÄ£¬ÒòΪËüÃDz»Ðè񻂡̾ÈýÌõÖ¸ÁîµÄ½á¹û¡£
ΪÁËÓÅ»¯Ëü£¬ÔÚÔçÆÚµÄ´¦ÀíÆ÷ÖУ¬Äã±ØÐëÔÚºóÈýÌõÖ¸ÁîÖв»ÓÃEAX¼Ä´æÆ÷£¬²¢ÇÒµ÷ÕûÖ¸ÁîµÄ˳ÐòʹµÃÁùÌõÖ¸ÁîÁ½Á½Åä¶Ô¡£
¶øPPro£¬PII£¬PIII´¦ÀíÆ÷ÒѾ×Ô¶¯ÎªÄã×öºÃÁËÕâÒ»ÇС£ ÔÚÿ´ÎÄãдEAX¼Ä´æÆ÷µÄʱºò£¬Ëü·ÖÅÉÒ»¸öеÄÁÙʱ¼Ä´æÆ÷¡£ Òò´Ë£¬MOV
EAX£¬[MEM3]Ïà¶ÔÇ°ÃæµÄÖ¸Áî¶ÀÁ¢ÁË¡£ ÔÚÂÒÐòÖ´ÐÐÖ®ºó£¬ÓпÉÄÜÔÚ½ÏÂýµÄÖ¸ÁîIMULÍê³É֮ǰ£¬MOV [MEM4]£¬EAXÒѾÍê³ÉÁË¡£
¼Ä´æÆ÷ÖØÃüÃûÊÇÍêÈ«×Ô¶¯µÄ¡£
ÿµ±Ò»ÌõÖ¸Áîдһ¸öÓÀ¾ÃÐԵļĴæÆ÷ʱ£¬Ò»¸öеÄÁÙʱ¼Ä´æÆ÷±»µ±×÷ËüµÄ»¯Éí°ã·ÖÅÉ¡£ Ò»Ìõ¶ÔÒ»¸ö¼Ä´æÆ÷¼È¶ÁÓÖдµÄÖ¸ÁîÒ²½«Òý·¢¼Ä´æÆ÷ÖØÃüÃû¡£ ±ÈÈçÇ°ÃæµÄINC
EAXÖ¸ÁÓÃÁËÒ»¸öÁÙʱ¼Ä´æÆ÷À´¶Á£¬ÁíÒ»¸öÁÙʱ¼Ä´æÆ÷À´Ð´¡£ Õâ²¢²»ÄܼõÉÙÒÀÀµ£¬µ±È»£¬Õâ¶Ô²¢·¢µÄ¼Ä´æÆ÷¶ÁÓÐЩÒâÒ壬ÉÔºó½âÊÍ¡£
ËùÓеÄͨÓüĴæÆ÷£¬¶ÑÕ»Ö¸Õëesp£¬±êÖ¾¼Ä´æÆ÷£¬¸¡µã¼Ä´æÆ÷£¬MMX¼Ä´æÆ÷£¬XMM¼Ä´æÆ÷ºÍ¶Î¼Ä´æÆ÷Äܱ»ÖØÃüÃû¡£
¿ØÖÆ×Ö£¬¸¡µã״̬×Ö²»Äܱ»ÖØÃüÃû£¬ÕâÊÇÒòΪÕâЩ¼Ä´æÆ÷ÓÃÆðÀ´ºÜÂý¡£ ¹²ÓÐ40¸öͨÓõÄÁÙʱ¼Ä´æÆ÷£¬Òò´ËÄã²»¿ÉÄÜÓÃÍê¡£
Ò»°ã½«Ò»¸ö¼Ä´æÆ÷Çå0µÄ·½·¨ÊÇXOR EAX£¬EAX»òSUB
EAX£¬EAX¡£ ÕâЩָÁî²»ÈÏΪÒÀÀµÓڼĴæÆ÷µÄÔÖµ¡£ µ«Èç¹ûÄãÏëÏû³ýÇ°ÃæµÄÂýÖ¸ÁîÔì³ÉµÄÒÀÀµ£¬Äã¾ÍÓÃMOV EAX£¬0¡£
¼Ä´æÆ÷ÖØÃüÃûÓɼĴæÆ÷»¯Ãû±í(RAT)ºÍÂÒÐò»º´æ(ROB)¿ØÖÆ¡£
´Ó½âÂëÆ÷³öÀ´µÄ΢Âë¾¹ýÒ»¸ö¶ÓÁнøÈëRAT£¬È»ºó½øÈëROBºÍ±£ÁôÕ¾¡£
ÔÚÒ»¸öʱÖÓÖÜÆÚRATÖ»ÄÜ´¦Àí3Ìõ΢Âë¡£ÕâÒâζ×Å΢´¦ÀíÆ÷ƽ¾ùÒ»¸öÖÜÆÚµÄ×ÜÍÌÍÂÁ¿²»Äܳ¬¹ý3Ìõ΢Âë¡£
ÖØÃüÃûµÄ¸öÊýûÓÐÌØÊâÏÞÖÆ¡£
RATÔÚÒ»¸öʱÖÓÖÜÆÚÄÚ¿ÉÒÔÖØÃüÃûÈý¸ö¼Ä´æÆ÷£¬ÉõÖÁÔÚÒ»¸öʱÖÓÖÜÆÚÄÚËü¿ÉÒÔÖØÃüÃûͬһ¸ö¼Ä´æÆ÷Èý´Î¡£
16.2 ¼Ä´æÆ÷¶ÁÑÓ³Ù
µ«ÓÐÒ»¸öÏÞÖÆ·Ç³£ÑÏÖØ£¬ÄǾÍÊÇÔÚÒ»¸öʱÖÓÖÜÆÚÄÚÄãÖ»ÄܶÁÁ½¸ö²»Í¬µÄÓÀ¾Ã¼Ä´æÆ÷Ãû¡£³ýÁËÖ¸ÁîÖÐÖ»ÓÃÓÚдµÄ¼Ä´æÆ÷Í⣬¶ÔÖ¸ÁîÖÐÆäËüÓõ½µÄ¼Ä´æÆ÷¶¼ÓÐÕâ¸öÏÞÖÆ¡£±ÈÈç:
MOV
[EDI + ESI]£¬ EAX
MOV
EBX£¬ [ESP + EBP]
µÚÒ»ÌõÖ¸Áî²úÉúÁ½Ìõ΢Â룺һ¸ö¶ÁEAX£¬Ò»¸ö¶ÁEDIºÍESI¡£ µÚ¶þÌõÖ¸Áî²úÉúÒ»¸ö΢Â룺¶ÁespºÍebp¡£
ebx²»Ëã×÷¶Á£¬ÒòΪÔÚÕâ¸öÖ¸ÁîÖÐËüÖ»±»Ð´¡£ ÈÃÎÒÃǼٶ¨ÕâÈý¸ö΢ÂëÒ»Æð¾¹ýRAT¡£ ½«ÓÃÈý¸ö×Ö³¤(WORD)À´±£´æÕâÈý¸öÒ»Æð¾¹ýRATµÄÁ¬ÐøÎ¢Âë¡£
ÒòΪROBÒ»¸öʱÖÓÖÜÆÚÖ»ÄÜ´¦ÀíÁ½¸öÓÀ¾ÃÐԼĴæÆ÷µÄ¶Á£¬¶øÎÒÃÇÓÐÎå¸ö¼Ä´æÆ÷¶Á£¬ËùÒÔÔÚÎÒÃǵÄÈýÔª×éµ½´ï±£Áôվ֮ǰ£¬±»¶îÍâµØÑÓ³ÙÁËÁ½¸öʱÖÓÖÜÆÚ¡£
ÔÙ±ÈÈ磬ÈýÔª×éÀïÓÐ3»ò4¸ö¼Ä´æÆ÷¶Á£¬ÄÇô»áÓÐÒ»¸öÖÜÆÚµÄÑÓ³Ù¡£
µ«ÔÚÒ»¸öÈýÔª×éÄÚ£¬Í¬Ò»¸ö¼Ä´æÆ÷±»¶Á¶à´Î²»±»¼ÆËãÔÚÄÚ¡£±ÈÈçÉÏÊö´úÂë¸ÄΪ:
MOV
[EDI + ESI]£¬ EDI
MOV
EBX£¬ [EDI + EDI]
ÆäʵֻÐèÒªÁ½¸ö¼Ä´æÆ÷¶Á(ESI£¬EDI)£¬ÈýÔª×é²»»á±»ÑÓ³Ù¡£
ÈôÒ»¸ö¼Ä´æÆ÷½«±»Ò»¸öÉÐδ֪µÄ΢ָÁîд£¬ÄÇôΪÁËÎÞ´ú¼ÛµØ»ñµÃÕâ¸ö¼Ä´æÆ÷£¬Ëü½«Ò»Ö±±»±£´æÔÚROBÄÚÖ±µ½±»Ð´»Ø¡£
Õ⽫ÏûºÄ3¸öʱÖÓÖÜÆÚ£¬ÉõÖÁ¸ü¶à¡£ д»ØÊÇ×îºóÒ»¸ö¿É·ÃÎÊÖµµÄÖ´Ðн׶Ρ£ »»¾ä»°Ëµ£¬ÔڼĴæÆ÷µÄÖµÉв»Äܱ»Ö´Ðе¥Ôª·ÃÎʵÄʱºò£¬Äã¿ÉÒÔûÓÐÑӳٵضÁ³öRATÖÐÈκμĴæÆ÷¡£
ÕâÊÇÒòΪµ±Ò»¸öÖµÒ»µ©Äܱ»·ÃÎÊ£¬Ëü½«±»¿ìËٵء¢Ö±½ÓµØÐ´µ½ÈκÎÐèÒªËüµÄºóÐøµÄROB±íÏî¡£
µ«Èç¹ûÔÚÐèÒªËüµÄºóÐøÎ¢Ö¸Áî½øÈëRAT֮ǰ£¬¸ÃÖµÒѾ±»Ð´»ØÁÙʱ|ÓÀ¾Ã¼Ä´æÆ÷£¬ÄÇôÕâ¸öÖµÖ»ÄÜ´ÓÖ»ÓÐÁ½¸ö¶Á¶Ë¿ÚµÄ¼Ä´æÆ÷ÎļþÖжÁ¡£
´ÓRATµ½Ö´Ðе¥ÔªÓÐÈý¸öÁ÷Ë®½×¶Î£¬Òò´ËÄã¿ÉÒÔÈ·¶¨£¬ÔÚÒ»¸ö΢ÂëÈýÔª×éÖб»Ð´¹ýµÄ¼Ä´æÆ÷ÖÁÉÙÄܱ»Ï¸öÈýÔª×éÎÞ´ú¼ÛµØ¶Á¡£
Èç¹ûд»Ø¶¯×÷ÒòΪÂÒÐò£¬ÂýÖ¸ÁÒÀÀµÁ´£¬cacheʧЧ£¬»òÆäËüÔµ¹Ê·¢ÉúÑÓ³Ù£¬ÄÇô¼Ä´æÆ÷¾ÍÄܱ»¸ü¿¿ºóµÄÖ¸ÁîÁ÷ÎÞ´ú¼ÛµØ¶Á¡£
±ÈÈç:
MOV
EAX£¬ EBX
SUB
ECX£¬ EAX
INC
EBX
MOV
EDX£¬ [EAX]
ADD
ESI£¬ EBX
ADD
EDI£¬ ECX
ÕâÁùÌõÖ¸Áî¸÷²úÉúÒ»Ìõ΢ָÁî¡£ÈÃÎÒÃǼٶ¨Ç°ÈýÌõ΢ָÁîÒ»Æð½øÈëRAT¡£ÕâÈýÌõÖ¸Áî¶ÁEBX£¬ECX£¬EAX¡£µ«ÒòΪÎÒÃǶÔEAX¶Á֮ǰÕýÔÚ¶ÔËüд£¬Òò´ËÕâ¸ö¶ÁÊÇûÓдú¼ÛµÄ£¬¼´ÎÒÃÇûÓÐÑÓ³Ù¡£
ÏÂÈýÌõ΢ָÁî¶ÁEAX£¬ ESI£¬ EBX£¬ EDI ºÍ ECX¡£
ËäÈ»ÔÚÇ°ÃæµÄÈýÔª×éÖÐEAX£¬EBX£¬ECX¶¼±»¸Ä¹ý£¬µ«ÔÚËüÃÇÄܱ»ÎÞ´ú¼Û·ÃÎÊ֮ǰ»¹Ã»±»Ð´»Ø£¬Òò´ËÖ»¹ØÏµµ½ESIºÍEDI£¬ÎÒÃÇҲûÓÐÑÓ³Ù¡£
Èç¹ûµÚÒ»¸öÈýÔª×éµÄÖ¸ÁîSUB ECX£¬EAX¸ÄΪCMP ECX£¬EAX£¬ÄÇôÓÉÓÚECXûÓб»Ð´£¬ÎÒÃǽ«ÒòΪÔÚµÚ¶þ¸öÈýÔª×éÖжÁESI£¬EDIºÍECX·¢ÉúÑÓ³Ù¡£
ͬÑùµØ£¬Èç¹ûINC EBX¸ÄΪNOP£¬»òÆäËüÖ¸ÁÄÇôÎÒÃǽ«ÒòΪÔÚµÚ¶þ¸öÈýÔª×éÖжÁESI£¬EBX£¬EDI¶ø·¢ÉúÑÓ³Ù¡£
ûÓÐÒ»ÖÖ΢ָÁîÄܹ»¶ÁÁ½¸öÒÔÉϼĴæÆ÷¡£Òò´Ë£¬ÈκζÁÁ½¸öÒÔÉϼĴæÆ÷µÄÖ¸Á±»²ð·ÖÖÁÁ½Ìõ»òÁ½ÌõÒÔÉÏ΢ָÁî¡£
ΪÁ˸ø¼Ä´æÆ÷¶Á½øÐмÇÊý£¬Äã±ØÐëͳ¼ÆÖ¸ÁîÖÐËùÓйØÁªµÄ¼Ä´æÆ÷£¬°üÀ¨ÕûÐμĴæÆ÷£¬±êÖ¾¼Ä´æÆ÷£¬Õ»Ö¸Õë¼Ä´æÆ÷£¬¸¡µã¼Ä´æÆ÷ºÍMMX¼Ä´æÆ÷¡£XMM¼Ä´æÆ÷¿´×÷Á½¸ö¼Ä´æÆ÷£¬³ýÁËËüÃDZ»²¿·ÖʹÓ㬱ÈÈçADDSSºÍMOVHLPS¡£
¶Î¼Ä´æÆ÷ºÍÖ¸ÁîÖ¸Õë¼Ä´æÆ÷ip²»¼ÆÔÚÄÚ¡£ ±ÈÈ磬ÔÚÖ¸ÁîSETZ ALÖÐÄãÓ¦¸ÃÖ»¼Æ±êÖ¾¼Ä´æÆ÷£¬¶ø²»ÊÇAL¡£ ADD
EBX£¬ECXÖУ¬EBXºÍECX¶¼Òª¼Æ£¬µ«±êÖ¾¼Ä´æÆ÷²»¼Æ£¬ÒòΪËüÃÇÖ»±»Ð´¡£ PUSH EAXÖ¸Áî¶ÁEAXºÍESP£¬È»ºóдESP¡£
¡¡¡¡
FXCHÖ¸ÁîÊǸöÀýÍâ¡£
Ëü½ö½öÊÇÖØÃüÃû£¬µ«Ã»ÓжÁÈκÎÖµ£¬Òò´ËÔڼĴæÆ÷¶ÁÑӳٵĹæÔòÀïËü²»±»¼Æ¡£ FXCHÖ¸ÁîµÄÐÐΪºÃ±ÈÒ»¸ö΢ָÁËü¼Èû¶Á£¬ÓÖûдÈκÎÇ£Éæ¶ÁÑӳٵĹæÔòµÄ¼Ä´æÆ÷¡£
¡¡¡¡
²»Òª°Ñ΢ָÁîÈýÔª×éºÍ½âÂë×é¸ã»ì¡£
Ò»¸ö½âÂë×é¿ÉÒÔ²úÉú1µ½6Ìõ΢ָÁ¼´Ê¹½âÂë×éÓÐÈýÌõÖ¸ÁÇÒÕýºÃ²úÉúÈýÌõ΢ָÁҲ²»Äܱ£Ö¤ÕâÈýÌõ΢ָÁîÒ»Æð½øÈëRAT¡£¡¡
½âÂëÆ÷ºÍRATÖ®¼äµÄ¶ÓÁÐÏ൱¶Ì(Ö»ÓÐ10Ìõ΢ָÁî)£¬Òò´ËÄã²»ÄÜÈÏΪ¼Ä´æÆ÷¶ÁÑÓ³Ù²»»áÓ°Ïì½âÂ룬Ҳ²»ÄÜÈÏΪ½âÂëÆ÷ÍÌÍÂÁ¿µÄ²¨¶¯Æð·ü²»»á¶ÔRATÔì³ÉÑÓ³Ù¡£
³ý·Ç¶ÓÁÐΪ¿Õ£¬·ñÔòºÜÄÑÔ¤ÖªÄÄЩ΢ָÁîÒ»Æð½øÈëRAT£¬µ«¶ÔÓÚÓÅ»¯µÄ´úÂëÀ´Ëµ£¬¶ÓÁÐÖ»ÓÐÔÚ·ÖÖ§Ô¤²âʧ°Üºó²ÅΪ¿Õ¡£
ͬһÌõÖ¸Áî²úÉúµÄ΢ָÁî²»Ò»¶¨Ò»Æð¾¹ýRAT£¬Î¢Ö¸ÁîÖ»ÊÇÔÚ¶ÓÁÐÖÐÁ¬ÐøµØ½øÈ룬Èý¸öÒ»×é¡£
Èç¹ûÊÇÒ»¸öÔ¤²âµ½µÄÌø×ª£¬ÐòÁв»±»´ò¶Ï£ºÔÚÌø×ªÖ®Ç°ºÍÖ®ºóµÄ΢ָÁî¿ÉÒÔÒ»Æð¾¹ýRAT¡£
Ö»Óе±Ò»¸öÔ¤²âʧ°ÜµÄÌø×ª£¬¶ÓÁвű»ÇåÏ´£¬ÖØÐ¿ªÊ¼£¬Òò´ËÏÂÈýÌõ΢ָÁîÒ»¶¨ÊÇÒ»Æð½øÈëRAT¡£
Èç¹ûÈýÌõÁ¬ÐøµÄ΢ָÁî¶ÁÁËÁ½¸öÒÔÉϵļĴæÆ÷£¬ÄãÒ»¶¨ÇéÔ¸ËüÃDz»ÒªÒ»Æð½øÈëRAT¡£
¶øËüÃÇÒ»Æð½øÈëµÄ¿ÉÄÜÐÔÊÇ1/3¡£ÔÚͬһ¸ö΢ÂëÈýÔª×éÖжÁ 3 »ò 4 ¸öÒѾд»ØµÄ¼Ä´æÆ÷£¬Æä´ú¼ÛÊÇÑÓ³ÙÒ»¸öʱÖÓÖÜÆÚ¡£
Äã¿ÉÒÔ°ÑÕâÒ»¸öʱÖÓµÄÑӳٵȼ۵ؿ´³ÉÔÚRATÖÐͬʱ¼ÓÔØÈýÌõÒÔÉÏ΢ָÁî¡£ ÓÉÓÚÕâÈýÌõ΢ָÁîÒ»Æð½øÈëRATµÄ¸ÅÂÊÊÇ1/3£¬Òò´Ëƽ¾ù´ú¼ÛÊÇ3/3=1Ìõ΢ָÁî¡£
¼ÆËãÒ»¶Î´úÂë¾¹ýRATµÄƽ¾ùʱ¼äµÄ·½·¨ÊÇ£º¼Ä´æÆ÷¶ÁÑӳٵĸöÊý¼ÓÉÏ΢ָÁîµÄ¸öÊý£¬ÔÙ³ýÒÔ3¡£ Äã»á·¢ÏÖΪÁËÈ¥³ýÑÓ³Ù£¬¼ÓÈëÒ»Ìõ¶îÍâµÄÖ¸ÁîµÄ·½·¨ÊÇÎÞ¼ÃÓÚʵġª¡ª
³ý·ÇÄãȷʵ֪µÀÄÄЩ΢ָÁîÒ»Æð½øÈëRAT£¬»òÕßÄãÄÜͨ¹ýÕâÌõ¶îÍâµÄÖ¸Áî×èÖ¹³¬¹ýÒ»¸öµÄ£¬Ç±ÔڵļĴæÆ÷¶ÁÑӳٵķ¢Éú¡£
ΪÁË´ïµ½Ò»¸öʱÖÓÖÜÆÚ3Ìõ΢ָÁîµÄÍÌÍÂÁ¿µÄÄ¿µÄ£¬Ò»¸öʱÖÓÀïÖ»ÄܶÁÁ½¸öÓÀ¾ÃÐԼĴæÆ÷µÄÏÞÖÆ¿ÉÄÜÊÇÐèÒª´¦ÀíµÄÒ»¸öÆ¿¾±¡£È¥³ý¼Ä´æÆ÷¶ÁÑӳٵķ½·¨ÈçÏÂ:
*½«¶Áͬһ¸ö¼Ä´æÆ÷µÄ΢ָÁÁ¿·ÅÔÚÒ»Æð£¬Ê¹ËüÃǽøÈëͬһ¸öÈýÔª×éµÄ¸ÅÂÊÌá¸ß¡£
*½«¶Á²»Í¬¼Ä´æÆ÷µÄ΢ָÁÁ¿¸ô¿ª£¬Ê¹ËüÃÇÎÞ·¨½øÈëͬһ¸öÈýÔª×é¡£
*Èç¹ûÒ»ÌõÖ¸Áîд»òÐÞ¸Äij¸ö¼Ä´æÆ÷£¬ÄÇôÔÚÕâÌõÖ¸ÁîÖ®ºó²»Òª·Å³¬¹ý3-4¸ö¶ÁÕâ¸ö¼Ä´æÆ÷µÄÈýÔª×é΢Âë¡£
ÕâÊÇΪÁ˱£Ö¤ÔÚÕâ¸ö¼Ä´æÆ÷±»¶ÁÒÔǰÉÐûÓб»Ð´»Ø£¨ÆäÖÐÓÐÌø×ªÃ»¹ØÏµ£¬Ö»ÒªËü±»Ô¤²âµ½£©¡£
Èç¹ûÄãÓÐÀíÓɹÀ¼Æµ½¼Ä´æÆ÷µÄд»Ø½«±»ÑÓ³Ù£¬ÄÇôÄ㻹Äܹ»ÔÚ¸ü¿¿ºóµÄÖ¸ÁîÁ÷Öа²È«µØ£¨ÎÞ´ú¼ÛµØ£©¶Á¼Ä´æÆ÷¡£
*Óþø¶ÔµØÖ·´úÌæÖ¸Õ룬ÕâÑùÄܼõÉټĴæÆ÷¶ÁµÄÊýÁ¿¡£
*ÔÚ²»»áÒýÆðÑÓ³ÙµÄij¸öÈýÔª×éÖУ¬Äã¿ÉÒÔÖØÃüÃûÒ»¸ö¼Ä´æÆ÷£¬ÕâÑùÄÜÔÚÒÔºóµÄÒ»¸ö»ò¶à¸öÈýÔª×éÖÐ×èÖ¹¸Ã¼Ä´æÆ÷µÄ¶ÁÑÓ³Ù¡£
±ÈÈ磺MOV ESP£¬ESP / ... / MOV EAX£¬[ESP+8]¡£
Õâ¸ö·½·¨¶àÁËÒ»Ìõ¶îÍâµÄ΢ָÁÒò´ËËü²»Ì«ÖµµÃ£¬³ý·Ç¹À¼ÆÕâÑù×öÄÜ·ÀÖ¹µÄƽ¾ù¶ÁÑÓ³ÙÊý´óÓÚ1/3¡£
¶ÔÓÚ²úÉúÒ»ÌõÒÔÉÏ΢ָÁîµÄÖ¸ÁÄãÒªÖªµÀ¸ÃÖ¸Áî²úÉúµÄ΢ָÁîµÄ˳Ðò£¬ÕâÑù¾ÍÄܾ«È··ÖÎö¼Ä´æÆ÷¶ÁÑӳٵĿÉÄÜÐÔ¡£
ÎÒÔÚÏÂÃæÁгöÁË´ó¶àÊýÆÕ±éµÄÇé¿ö¡£
*дÄÚ´æ
ÄÚ´æµÄд²úÉúÁ½Ìõ΢ָÁî¡£µÚÒ»Ìõ( ¶Ë¿Ú4 )ÊÇÒ»¸ö´æ´¢²Ù×÷¡ª¡ª¶Á¼Ä´æÆ÷Öµ²¢¼ÇÏ¡£ µÚ¶þÌõ( ¶Ë¿Ú3
)¼ÆËãÄÚ´æµØÖ·£¬¶ÁÖ¸Õë¼Ä´æÆ÷¡£±ÈÈç:
MOV [EDI]£¬ EAX
µÚÒ»Ìõ΢ָÁî¶ÁEAX£¬ µÚ¶þÌõ¶ÁEDI¡£
FSTP QWORD PTR
[EBX+8*ECX]
µÚÒ»Ìõ¶ÁST(0)£¬ µÚ¶þÌõ¶ÁEBXºÍECX¡£
*¶Á\д
Ò»¸ö¶ÁÄÚ´æ²Ù×÷Êý£¬Í¨¹ýËãÊõÔËËã»òÂß¼ÔªËãÐ޸ļĴæÆ÷µÄÖ¸Áî²úÉúÁ½Ìõ΢ָÁî¡£µÚÒ»Ìõ( ¶Ë¿Ú2
)ÊÇÒ»¸ö¶ÁÖ¸Õë¼Ä´æÆ÷²¢ÇÒ¶ÁÄÚ´æÖ¸ÁµÚ¶þÌõÊÇÒ»¸öËãÊõÖ¸Áî( ¶Ë¿Ú0»ò1 )£¬Ëü¶Á\дĿµÄ¼Ä´æÆ÷£¬¿ÉÄÜд±êÖ¾¼Ä´æÆ÷¡£ ±ÈÈç:
ADD EAX£¬ [ESI+20]
µÚÒ»Ìõ΢Âë¶ÁESI£¬
µÚ¶þÌõ¶ÁEAX£¬Ð´EAXºÍ±êÖ¾¼Ä´æÆ÷¡£
*¶Á\ÐÞ¸Ä\д
¶Á\ÐÞ¸Ä\дָÁî²úÉúËÄÌõ΢ָÁî¡£ µÚÒ»Ìõ( ¶Ë¿Ú2 )¶ÁÖ¸Õë¼Ä´æÆ÷£¬µÚ¶þÌõ( ¶Ë¿Ú0»ò1
)¶Á\дËùÓеÄÔ´¼Ä´æÆ÷£¬¿ÉÄÜд±êÖ¾¼Ä´æÆ÷¡£µÚÈýÌõ( ¶Ë¿Ú4 )Ö»¶Á²»¼ÆÔÚÕâÀïµÄÁÙʱ½á¹û¡£ µÚËÄÌõ( ¶Ë¿Ú3 )ÔÙÒ»´Î¶ÁÖ¸Õë¼Ä´æÆ÷¡£
ÒòΪµÚÒ»ÌõºÍµÚËÄÌõ΢ָÁî²»ÄÜÒ»Æð½øÈëRAT£¬Òò´ËÄãÎÞ·¨ÀûÓÃËüÃǶÁµÄÊÇͬһ¸öÖ¸Õë¼Ä´æÆ÷Õâ¸öÊÂʵ¡£ ±ÈÈ磺
OR
[ESI+EDI]£¬ EAX
µÚÒ»Ìõ΢ָÁî¶ÁESIºÍEDI£¬µÚ¶þÌõ΢ָÁî¶ÁEAX£¬Ð´EAXºÍ±êÖ¾£¬ µÚÈýÌõÖ»¶ÁÁÙʱ½á¹û£¬
µÚËÄÌõÔٴζÁESIºÍEDI¡£
²»¹ÜÕâЩ΢ÂëÈçºÎ½øÈëRAT£¬ÄãÄܱ£Ö¤¶ÁEAXµÄ΢ÂëÓëÆäÖÐÒ»¸ö¶ÁESIºÍEDIµÄ΢ÂëÊÇÒ»Æð½øÈëµÄ¡£ËùÒÔ¶ÔÓÚÕâÌõÖ¸Á¼Ä´æÆ÷¶ÁÑÓ³Ù²»¿É±ÜÃâµØ·¢ÉúÁË£¬³ý·ÇÕâÈý¸ö¼Ä´æÆ÷ÖеÄÒ»¸ö×î½ü¸Õ±»Ð޸Ĺý¡£
*¼Ä´æÆ÷ѹջ
Ò»Ìõ¼Ä´æÆ÷ѹջָÁî²úÉúÈýÌõ΢ָÁî¡£µÚÒ»Ìõ( ¶Ë¿Ú4
)ÊǶÁ³ö¼Ä´æÆ÷Öµºó¼ÇÏ£¬µÚ¶þÌõ¶Á¶ÑÕ»Ö¸Õë¼Ä´æÆ÷ESP£¬²úÉúÄÚ´æµØÖ·£¬µÚÈýÌõ( ¶Ë¿Ú0»ò1 )¶Á²¢ÐÞ¸ÄESP£¬¼õÈ¥Ò»¸ö×ֵĴóС( »òÒ»¸öË«×Ö )¡£
*¼Ä´æÆ÷³öÕ»
¼Ä´æÆ÷³öÕ»Ö¸Áî²úÉúÁ½Ìõ΢Âë¡£µÚÒ»Ìõ( ¶Ë¿Ú2
)¶Á³öESP£¬¶Á³öÄÚ´æÖµ£¬Ð´Èë¼Ä´æÆ÷£¬µÚ¶þÌõ¶Á²¢ÐÞ¸ÄÕ»¶¥Ö¸Õ룬µ÷ÕûÕ»¶¥Ö¸Õë¡£
*µ÷ÓÃ
½üµ÷ÓòúÉú4Ìõ΢Âë( ·Ö±ð½øÈë¶Ë¿Ú 1£¬ 4£¬ 3£¬ 01
)¡£Ç°Á½ÌõÖ»¶Áip£¬Õâ²»Äܱ»¼Æ£¬ÒòΪËü²»Äܱ»ÖØÃüÃû¡£ µÚÈýÌõ¶Á¶ÑÕ»Ö¸Õë¡£ µÚËÄÌõ¶Á²¢Ð޸ĶÑÕ»Ö¸Õë¡£
*·µ»Ø
½ü·µ»Ø²úÉú4Ìõ΢Âë( ·Ö±ð½øÈë¶Ë¿Ú 2£¬ 01£¬ 01£¬ 1
)¡£µÚÒ»Ìõ¶Á¶ÑÕ»Ö¸Õë¡£ µÚÈýÌõ¶Á²¢Ð޸ĶÑÕ»Ö¸Õë¡£
ÈçºÎ±ÜÃâ¼Ä´æÆ÷¶ÁÑÓ³ÙµÄÀý×ÓÔÚ ÊµÀý2.6 Öиø³ö
17. ÂÒÐòÖ´ÐÐ(PPro£¬ PII and PIII)
ÂÒÐò»º´æ(reorder buffer£¬¼ò³ÆROB)¿ÉÒÔÈÝÄÉ40Ìõ΢Âë¡£
Ò»Ìõ΢Âë´ôÔÚROBÖУ¬Ö±µ½ËùÓÐËüÐèÒªµÄ²Ù×÷Êý¶¼ÒѾÍÐ÷²¢ÇÒÓÐÒ»¸ö¿ÕµÄÖ´Ðе¥Ôª¿ÉÓᣠÕâÒ»ÇÐʹµÃÂÒÐòÖ´ÐгÉΪ¿ÉÄÜ¡£
Èç¹ûÒ»²¿·Ö´úÂëÒòΪcache²»ÃüÖб»ÑÓ³Ù£¬ÇÒÖ®ºóµÄ´úÂë¶ÀÁ¢ÓÚ±»ÑӳٵIJÙ×÷£¬ÄÇôºóÃæµÄ´úÂë²»»á±»ÑÓ³Ù¡£
дÄÚ´æµÄ²Ù×÷ÎÞ·¨ÂÒÐòÖ´ÐУ¬ÆäËüµÄд²Ù×÷¶¼ÄÜ¡£ Ò»¹²ÓÐ4¸öд»º´æ¡£
Òò´ËÈç¹ûÄãÔ¤¼ÆÐ´²Ù×÷ʱ»áÓкܶàcache²»ÃüÖлòÕßÄãÕýÔÚÏòδÃüÖÐcacheµÄÄÚ´æÐ´£¬ÄÇô½¨ÒéÄãÏÈÒ»´Î°²ÅÅ4¸öд²Ù×÷£¬²¢ÇÒ±£Ö¤ÔÚÏÂ4¸öд²Ù×÷֮ǰCPUÓÐÆäËüÊÂÇé×ö¡£
ÄÚ´æ¶ÁºÍÆäËüÖ¸ÁîÒ»°ã¶¼ÄÜÂÒÐòÖ´ÐУ¬³ýÁËIN£¬OUTºÍÐòÁл¯µÄÖ¸Áî¡£
Èç¹ûÄãµÄ³ÌÐòÏòij¸öÄÚ´æµØÖ·Ð´£¬²»¾ÃÖ®ºóÓÖ´Óͬһ¸öµØÖ·¶Á£¬ÄÇô¶Á²Ù×÷»á´íÎóµØÔÚд²Ù×÷֮ǰִÐУ¬ÒòΪÂÒÐòÖ´ÐеÄʱºòROB²»ÄÜ·Ö±æÕâ¸öÄÚ´æµØÖ·¡£µ±Ð´µØÖ·±»¼ÆËãµÄʱºò´íÎó²Å±»·¢ÏÖ£¬È»ºó¶Á²Ù×÷(ËüÊDZ»"Ͷ»úÖ´ÐÐ"µÄ)±ØÐëÖØ×ö¡£
³Í·£´óÔ¼ÊÇ3¸öʱÖÓÖÜÆÚ¡£ ±ÜÃâËüµÄΨһ°ì·¨ÊDZ£Ö¤Ö´Ðе¥ÔªÔÚд²Ù×÷ºÍºóÃæµÄ¶Áͬһ¸öµØÖ·µÄ²Ù×÷Ö®¼äÓÐÆäËüÊÂÇé×ö¡£
ÔÚÎå¸ö¶Ë¿ÚÖÜΧÓм¸¸ö³ÉȺµÄÖ´Ðе¥Ôª¡£ ¶Ë¿Ú0ºÍ1ÓÃÓÚËãÊõÔËËãµÈ¡£
¼òµ¥µÄmove£¬ËãÊõºÍÂß¼ÔËËãÄܹ»½ø0ºÍ1¶Ë¿ÚµÄÈÎÒâÒ»¸ö£¬¾Í¿´ÄĸöÓпÕÁË¡£ ¶Ë¿Ú0»¹´¦Àí³Ë·¨£¬³ý·¨£¬ÕûÐÍÒÆÎ»ºÍÕûÐÍÑ»·ÒÆÎ»£¬¸¡µã²Ù×÷¡£
¶Ë¿Ú1»¹´¦ÀíÌø×ªºÍһЩMMX£¬XMM²Ù×÷¡£ ¶Ë¿Ú2´¦ÀíËùÓеÄÄÚ´æ¶Á£¬Ò»Ð©´®²Ù×÷ºÍһЩXMM²Ù×÷¡£ ¶Ë¿Ú3ΪÄÚ´æÐ´¼ÆËãµØÖ·¡£ ¶Ë¿Ú4Ö´ÐÐËùÓеÄÄÚ´æÐ´²Ù×÷¡£ ÔÚ29ÕÂÄãÄÜ¿´µ½Ö¸Áî²úÉúµÄ΢ÂëµÄÍêÕûÁÐ±í£¬»¹Ö¸³ö¸÷¸ö΢Âë½øÈëÄĸö¶Ë¿Ú¡£
×¢Ò⣬ÄÚ´æÐ´²Ù×÷×ÜÊÇÐèÒªÁ½Ìõ΢Â룬һÌõ½ø¶Ë¿Ú3£¬Ò»Ìõ½ø¶Ë¿Ú4¡£ ÄÚ´æ¶Á²Ù×÷Ö»ÐèÒªÒ»Ìõ΢Âë( ½øÈë¶Ë¿Ú2 )¡£
¶àÊýÇé¿öÏ£¬Ò»¸ö¶Ë¿Úÿ¸öÖÜÆÚ½ÓÊÜÒ»Ìõ΢Âë¡£
ÕâÒâζ×ÅÒ»¸öÖÜÆÚ×î¶à¿ÉÒÔÖ´ÐÐ5Ìõ΢Âë(Èç¹ûËüÃÇ·Ö±ð½øÈë5¸ö²»Í¬µÄ¶Ë¿Ú)¡£
È»¶øÒòΪ֮ǰµÄÁ÷Ë®ÏßÔÚÒ»¸öʱÖÓ×î¶à²úÉú3Ìõ΢Â룬ËùÒÔ²»¿ÉÄÜÆ½¾ùÒ»¸öʱÖÓÖ´ÐÐ3ÌõÒÔÉÏ΢Âë¡£
Èç¹ûÄãÏëά³Öÿ¸öʱÖÓ3Ìõ΢ÂëµÄÍÌÍÂÂÊ£¬ÄÇô±ØÐ뱣֤ûÓÐÖ´Ðе¥Ôª½ÓÊÕ³¬¹ýÈý·ÖÖ®Ò»ÊýÁ¿µÄ΢Âë¡£ ÓÃÁË29ÕµÄ΢Âë±í¿ÉÒÔÊý³ö½øÈë¸÷¸ö¶Ë¿ÚµÄ΢ÂëÊý¡£
Èç¹û¶Ë¿Ú0ºÍ1ºÜ棬¶ø¶Ë¿Ú2¿ÕÏУ¬ÄÇôÄãÒªÓÃMOV register£¬memoryÖ¸ÁîÈ¡´úMOV register£¬register »ò MOV
register£¬immediateÖ¸ÁîÀ´¸Ä½ø´úÂ룬ÕâÑù¿ÉÒÔ´Ó¶Ë¿Ú0ºÍ1ÉÏÒÆ³ö²¿·Ö¸ºµ£µ½¶Ë¿Ú2¡£
´ó¶àÊý΢ÂëµÄÖ´ÐÐʱ¼äÊÇÒ»¸öʱÖÓÖÜÆÚ¡£ µ«³Ë·¨£¬³ý·¨ºÍÐí¶à¸¡µãÔËËãÒªÓøü¶à£º
¸¡µã¼Ó·¨ºÍ¸¡µã¼õ·¨ÓÃ3¸öÖÜÆÚ£¬µ«Ö´Ðе¥ÔªÊÇÍêÈ«Á÷Ë®»¯µÄ£¬Òò´ËÔÚÉÏÒ»¸ö¸¡µã¼Ó/¼õ½áÊøÖ®Ç°£¬Ëü¾ÍÄÜÔÚÿ¸öʱÖÓÖÜÆÚ½ÓÊÜÒ»¸öеÄFADD»òFSUB(µ±È»Òª»ùÓÚËüÃÇÊǶÀÁ¢µÄÕâ¸ö¼ÙÉè)¡£
ÕûÐͳ˷¨»¨4¸öÖÜÆÚ£¬¸¡µã³Ë·¨»¨5¸öÖÜÆÚ£¬MMX³Ë·¨»¨3¸öÖÜÆÚ¡£
ÕûÐͺÍMMX³Ë·¨ÊÇÁ÷Ë®»¯µÄ£¬¿ÉÔÚÿ¸öʱÖÓ½ÓÊÜÒ»ÌõÐÂÖ¸Áî¡£
¸¡µã³Ë·¨ÊDz¿·ÖÁ÷Ë®»¯µÄ£ºÖ´Ðе¥Ôª¿ÉÒÔÔÚǰһ¸ö¸¡µã³Ë·¨µÄ2¸öʱÖÓÖ®ºó½ÓÊÜÒ»¸öеÄFMUL£¬Òò´Ë×î´óÍÌÍÂÁ¿ÊÇÿÁ½¸öʱÖÓÒ»ÌõFMUL¡£
Á½ÌõFMULÖ®¼äµÄ¿Õ¶´ÓÃÕûÐͳ˷¨È¥Ìî³äÎÞ¼ÃÓÚÊ£¬ÒòΪËüÃÇÓÃͬһÌõµç·¡£ XMM¼Ó·¨ÓÃ3¸öʱÖÓ£¬XMM³Ë·¨ÓÃ4¸öʱÖÓ£¬¶øÇÒ¶¼ÊÇÍêÈ«Á÷Ë®»¯µÄ¡£
µ«ÒòΪÂß¼ÉϵÄXMM¼Ä´æÆ÷ÔÚÎïÀíÉÏÊÇÓÃÁ½¸ö64λ¼Ä´æÆ÷ʵÏֵģ¬ÄãÐèÒªÁ½Ìõ΢ÂëÕûºÏÒ»¸öXMM²Ù×÷£¬Òò´ËÍÌÍÂÁ¿ÊÇÿÁ½¸öʱÖÓÒ»¸öXMM²Ù×÷¡£
XMM¼Ó·¨ºÍXMM³Ë·¨¿ÉÒÔ²¢ÐÐÖ´ÐУ¬ÒòΪËüÃÇÓõIJ»ÊÇͬһ¸öÖ´Ðе¥Ôª¡£
ÕûÐͺ͸¡µãÐͳý·¨ÐèÒª39¸öʱÖÓ£¬¶øÇÒ²»ÊÇÁ÷Ë®»¯µÄ¡£ ÕâÒâζ×ÅÔÚǰһ¸ö³ý·¨Íê³É֮ǰ£¬Ö´Ðе¥ÔªÎÞ·¨¿ªÊ¼Ðµijý·¨¡£
¶Ô¿ª·½ºÍһЩ³¬Ô½º¯ÊýͬÑùÈç´Ë¡£
jump£¬callºÍreturnÖ¸ÁîÒ²²»ÊÇÍêÈ«Á÷Ë®»¯µÄ¡£ ÔÚÌø×ªºóµÄµÚÒ»¸öʱÖÓÖÜÆÚÄÚÄã²»ÄÜÖ´ÐÐÒ»¸öеÄÌø×ª¡£
Òò´Ëjump£¬callºÍreturnÖ¸ÁîµÄ×î´óÍÌÍÂÁ¿ÊÇÿÁ½¸öʱÖÓÒ»ÌõÖ¸Áî¡£
Ä㵱Ȼ»¹Ó¦¸Ã±ÜÃâÄÇЩ²úÉúºÜ¶à΢ÂëµÄÖ¸Áî¡£±ÈÈçLOOP XXÖ¸ÁӦ¸Ã±»Ì滻Ϊ:DEC ECX/JNZ XX¡£
Èç¹ûÄãÓÐÁ¬ÐøµÄPOPÖ¸ÁÄÇôÄãÓ¦¸Ã°ÑËüÃÇ"´òËé"ÒÔ¼õÉÙ΢ÂëÊý:
POP ECX / POP EBX / POP EAX ;
¿ÉÒÔ±ä³É:
MOV ECX£¬[ESP] / MOV EBX£¬[ESP+4] / MOV EAX£¬[ESP] /
ADD ESP£¬12
ǰÕß²úÉú6Ìõ΢Â룬ºóÕßÖ»²úÉú4Ìõ΢Âë¶øÇÒ½âÂë¸ü¿ì¡£
¶ÔÓÚPUSHÖ¸ÁîÓÃͬÑùµÄ·½·¨¾Í²»Ì«ºÃÁË£¬ÒòΪ±»"´òËé"µÄ´úÂëÐòÁпÉÄܲúÉú¼Ä´æÆ÷¶ÁÑÓ³Ù£¬³ý·ÇÄãÓÐÆäËüµÄÖ¸Áî¿ÉÒÔ²åÈë»òÕ߼ĴæÆ÷×î½ü±»ÖØÃüÃû¹ý¡£
¶ÔÓÚCALLºÍRETÖ¸ÁîÓÃÕâ¸ö·½·¨Ò²²»ºÃ£¬»á·Á°·µ»ØÕ»»º´æ(return stack buffer£¬¼ò³ÆRSB)µÄÔ¤²â¹¦ÄÜ¡£
»¹Òª×¢ÒâµÄ¾ÍÊÇÔÚÔçÆÚµÄ´¦ÀíÆ÷ÖУ¬ADD ESPÖ¸ÁîÒ²»áÒýÆðAGIÑÓ³Ù¡£
18. ÒýÍË(PPro£¬PIIºÍPIII)
ÒýÍËÊÇ΢ÂëʹÓõÄÁÙʱ¼Ä´æÆ÷Êý¾Ý¿½»ØÓÀ¾Ã¼Ä´æÆ÷(EAX£¬EBXµÈ)µÄ¹ý³Ì¡£
ÔÚROBÖУ¬Ò»ÌõÒѾִÐйýµÄ΢Âë±»±ê¼ÇΪ׼±¸ÒýÍË¡£
ÒýÍËÕ¾¿ÉÒÔÔÚÒ»¸öʱÖÓÖÜÆÚ´¦Àí3Ìõ΢Âë¡£ Õâ²»³ÉÎÊÌ⣬ÒòΪÔÚRATÖÐÍÌÍÂÁ¿ÒѾ±»ÏÞÖÆÎªÒ»¸öʱÖÓ3Ìõ΢Âë¡£
µ«ÓÐÁ½¸öÔÒò»áʹÒýÍËÒ²³ÉΪƿ¾±: µÚÒ»£¬Ö¸Áî±ØÐëÓÐÐòÒýÍË¡£ Èç¹ûÒ»Ìõ΢Âë±»ÂÒÐòÖ´ÐÐÁË£¬ÄÇôÔÚËüÇ°ÃæµÄÈ«²¿Î¢Â뻹ûÒýÍË֮ǰËü²»ÄÜÒýÍË¡£
µÚ¶þ¸öÏÞÖÆÊDZ»È·ÈÏΪ·¢ÉúµÄÌø×ªÖ¸Áî±ØÐëÔÚÒýÍËÕ¾µÄÈý¸ö²ÛµÄµÚÒ»¸ö²ÛÖÐÒýÍË¡£
¾ÍÏñÒ»ÌõÖ¸ÁîÖ»ÊʺϽâÂëÆ÷D0£¬½âÂëÆ÷D1¡¢D2Ö»ÄÜÏÐÖÃÒ»Ñù£¬Èç¹ûÒ»ÌõÒªÒýÍ˵Ä΢ÂëÊÇÒ»¸ö±»È·ÈÏΪ·¢ÉúµÄÌø×ª£¬ÄÇôÒýÍËÕ¾µÄºóÁ½¸ö²ÛÖ»ÄÜÏÐÖá£
Òò´Ë¼ÙÈçÄãÓÐÒ»¸öСѻ·£¬ÄÇôÆäÖеÄ΢ÂëÊý²»Äܱ»3Õû³ýºÜÖØÒª¡£
ÈκÎ΢ÂëÔÚÒýÍË֮ǰ¶¼´ôÔÚÂÒÐò»º´æÖÐ(ROB)¡£ ROB¿ÉÒÔÈÝÄÉ40Ìõ΢Âë¡£
Õâ¾ÍÏÞÖÆÁËÔÚ³ý·¨µÈÂýÖ¸ÁîµÄ´óÑÓ³ÙÆÚ¼ä¿ÉÒÔÖ´ÐеÄÖ¸ÁîÊý¡£
ÔÚ³ý·¨Íê³É֮ǰ£¬ROB»á´óÁ¿³äÈûÖ´ÐйýºóµÈ´ýÒýÍ˵Ä΢Â룬¶øÖ»ÓÐÔÚ³ý·¨Íê³É²¢ÒýÍ˺ó£¬ÄÇЩºóÀ´²¢ÐеÄ΢Âë²Å¿ªÊ¼ÒýÍË£¬ÒòΪÒýÍËÊÇÓÐÐò½øÐеġ£
ÔÚÔ¤²â·ÖÖ§"Ͷ»ú"Ö´ÐÐ(µÚ22ÕÂ)µÄÇé¿öÏ£¬ÔÚÈ·ÈÏ·ÖÖ§Ô¤²âÕýÈ·ÒÔǰÄÇЩ"Ͷ»ú"Ö´ÐеÄ΢Âë²»ÄÜÒýÍË¡£
Èç¹û·¢ÏÖÔ¤²â½á¹ûÊÇ´íÎóµÄ£¬ÄÇô"Ͷ»ú"Ö´ÐйýµÄ΢Âë²»ÒýÍËÁË£¬È«±»·ÏÆú¡£
ÕâЩָÁî²»Äܱ»"Ͷ»ú"Ö´ÐÐ:ÄÚ´æÐ´£¬IN£¬OUTºÍÐòÁл¯µÄÖ¸Áî¡£
19. ²¿·ÖÑÓ³Ù(PPro£¬PIIºÍPIII)
19.1 ²¿·Ö¼Ä´æÆ÷ÑÓ³Ù
µ±Äã¶ÔÒ»¸ö32λ¼Ä´æÆ÷µÄ²¿·Öд£¬²»¾Ãºó¶Á¸ü´óµÄÒ»²¿·Ö»òÕû¸ö£¬²¿·Ö¼Ä´æÆ÷ÑÓ³Ù½«·¢Éú¡£ ±ÈÈç:
MOV AL£¬
BYTE PTR [M8]
MOV EBX£¬
EAX ¡¡¡¡¡¡¡¡¡¡; ²¿·Ö¼Ä´æÆ÷ÑÓ³Ù
ÑÓ³ÙÊÇ5-6¸öʱÖÓ¡£
ÀíÓÉÊÇÒ»¸öÁÙʱ¼Ä´æÆ÷Òѱ»·ÖÅ䏸AL(ʹËü¶ÀÁ¢ÓÚAH)£¬ÔÚÖ´Ðе¥Ôª°ÑALµÄÖµÓëEAXÆäÓಿ·ÖµÄÖµ×éºÏÆðÀ´½øÐжÁÒÔǰ£¬±ØÐëµÈ´ýALд²Ù×÷µÄÒýÍË¡£
ͨ¹ý¸Ä±ä´úÂë±ÜÃâÑÓ³Ù:
¡¡¡¡¡¡¡¡MOVZX EBX£¬ BYTE
PTR [MEM8]
¡¡¡¡¡¡¡¡AND EAX£¬ 0FFFFFF00h
¡¡¡¡¡¡¡¡OR EBX£¬ EAX
µ±È»Ò²¿ÉÒÔÔڼĴæÆ÷µÄ²¿·Öд²Ù×÷Ö®ºó²åÈëһЩÆäËüÖ¸ÁîÀ´±ÜÃâÕâÖÖÑÓ³Ù£¬ÕâÑùÔÚÄã¶ÁÕû¸ö¼Ä´æÆ÷֮ǰ¿ÉÒÔÓгä·Öʱ¼äÒýÍË¡£
Ö»ÒªÄãÔÚ´úÂëÖлìºÏʹÓÃÁ˲»Í¬µÄÊý¾Ý³ß´ç(8£¬16ºÍ32λ)£¬Äã¾ÍҪעÒâµ½²¿·ÖÑÓ³Ù:
¡¡¡¡¡¡¡¡ MOV BH£¬ 0
¡¡¡¡¡¡ADD BX£¬ AX ¡¡¡¡¡¡¡¡; ÑÓ³Ù
¡¡¡¡¡¡¡¡INC EBX ¡¡¡¡¡¡¡¡¡¡¡¡; ÑÓ³Ù
Èç¹ûÊÇÏÈдÁË´óµÄ²¿·Ö»òÕû¸ö¼Ä´æÆ÷£¬È»ºóÔÙ¶Á²¿·Ö¼Ä´æÆ÷Ôò²»»áÓÐÑÓ³Ù:
¡¡¡¡¡¡¡¡MOV EAX£¬ [MEM32]
¡¡¡¡¡¡¡¡ADD BL£¬ AL ¡¡¡¡¡¡¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡ADD
BH£¬ AH ¡¡¡¡¡¡¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡MOV CX£¬ AX ¡¡¡¡¡¡¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡MOV DX£¬ BX ¡¡¡¡¡¡¡¡; ÑÓ³Ù
±ÜÃⲿ·Ö¼Ä´æÆ÷ÑÓ³ÙµÄ×î¼òµ¥µÄ·½·¨ÊÇÒ»Ö±ÓÃÕû¸ö¼Ä´æÆ÷¡ª¡ªÔÚ¶ÁСµÄÄÚ´æ²Ù×÷ÊýʱÓÃMOVZX»òMOVSX¡£
ÕâЩָÁîÔÚPPro£¬PIIºÍPIIIÉϺܿ죬µ«ÔÚÔçÆÚµÄ´¦ÀíÆ÷ÉÏÂý¡£ÒªÔÚËùÓд¦ÀíÆ÷ÉÏÔËÐпìµÃÏë¸öÕÛÖеİ취¡£ ¿ÉÒÔ°ÑMOVZX EAX£¬BYTE PTR
[M8]Ìæ»»³ÉÈçÏÂÖ¸Á
¡¡¡¡¡¡¡¡XOR EAX£¬
EAX
¡¡¡¡¡¡¡¡MOV AL£¬ BYTE PTR [M8]
ÒªÖªµÀ£¬ÎªÁ˱ÜÃâÒÔºó¶ÁEAXÔì³ÉµÄ²¿·Ö¼Ä´æÆ÷ÑÓ³Ù£¬PPro£¬PIIºÍPIIIרÃÅΪ´ËÀàÖ¸Áî×éºÏ×öÁËÒ»¼þÌØÊâµÄÊ£¬Ëü²ÉÈ¡µÄ¼¼ÇɾÍÊǵ±Ò»¸ö¼Ä´æÆ÷Óë×ÔÉíÒì»òµÄʱºò¼Ä´æÆ÷Ö±½Ó±»¼ÇΪÇåÁã¡£
´¦ÀíÆ÷¼ÇסEAXµÄ¸ß24λÊÇÁ㣬Òò´Ë±ÜÃâÁ˲¿·ÖÑÓ³Ù¡£ Õâ¸ö»úÖÆÖ»ÔÚÈçϵÄ×éºÏ¹¤×÷£º
¡¡¡¡¡¡¡¡XOR EAX£¬ EAX
¡¡¡¡¡¡¡¡MOV AL£¬ 3¡¡
¡¡¡¡¡¡¡¡MOV EBX£¬ EAX ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡XOR AH£¬ AH
¡¡¡¡¡¡¡¡MOV AL£¬ 3
¡¡¡¡¡¡¡¡MOV BX£¬ AX ;
ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡XOR EAX£¬ EAX
¡¡¡¡¡¡¡¡MOV AH£¬ 3
¡¡¡¡¡¡¡¡MOV EBX£¬ EAX ;
ÑÓ³Ù
¡¡¡¡¡¡¡¡SUB EBX£¬ EBX
¡¡¡¡¡¡¡¡MOV BL£¬ DL
¡¡¡¡¡¡¡¡MOV ECX£¬ EBX ;
ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡MOV EBX£¬ 0
¡¡¡¡¡¡¡¡MOV BL£¬ DL
¡¡¡¡¡¡¡¡MOV ECX£¬ EBX ;
ÑÓ³Ù
¡¡¡¡¡¡¡¡MOV BL£¬ DL
¡¡¡¡¡¡¡¡XOR EBX£¬ EBX ¡¡¡¡; ÎÞÑÓ³Ù
ͨ¹ýÒ»¸ö¼Ä´æÆ÷ÓëËü×ÔÉíÏà¼õÇåÁãÓëXORµÄ¹¤×÷·½Ê½Ïàͬ£¬µ«ÓÃMOVÖ¸ÁîÇåÁãÔòÎÞ·¨×èÖ¹ÑÓ³Ù·¢Éú¡£
Äã¿ÉÒÔÔÚÑ»·Íâдһ¸öXORÖ¸Á
¡¡¡¡¡¡¡¡XOR EAX£¬ EAX
¡¡¡¡¡¡¡¡MOV ECX£¬ 100
¡¡LL: ¡¡MOV AL£¬
[ESI]
¡¡¡¡¡¡¡¡MOV [EDI]£¬ EAX ¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡INC ESI
¡¡¡¡¡¡¡¡ADD EDI£¬ 4
¡¡¡¡¡¡¡¡DEC ECX
¡¡¡¡¡¡¡¡JNZ LL
ֻҪûÓÐÖжϣ¬Ô¤²âʧ°Ü»òÆäËüÐòÁл¯Ê¼þ·¢Éú£¬´¦ÀíÆ÷»á¼ÇסEAXµÄ¸ß24λÊÇ0¡£
ÔÚµ÷ÓÃÒ»¸ö¿ÉÄÜ»áPUSHÕû¸ö¼Ä´æÆ÷µÄ×Ó¹ý³Ì֮ǰ£¬ÄãÓ¦¸Ã¼ÇµÃ¡°Ñ¹ÖÆ¡±ÈκÎǰ²»¾ÃÓùýµÄ²¿·Ö¼Ä´æÆ÷£º
¡¡¡¡¡¡¡¡ADD BL£¬ AL
¡¡¡¡¡¡¡¡MOV [MEM8]£¬ BL
¡¡¡¡¡¡¡¡XOR EBX£¬ EBX
¡¡¡¡¡¡; Ñ¹ÖÆBL
¡¡¡¡¡¡¡¡CALL _HighLevelFunction
´ó¶àÊý¸ß¼¶ÓïÑÔ»áÔÚÒ»¸ö¹ý³Ì¿ªÊ¼µÄµØ·½PUSH
EBX£¬Èç¹ûÏñÉÏÃæÕâÀàÇé¿öÄãûÓÐÑ¹ÖÆBL£¬»á²úÉú²¿·Ö¼Ä´æÆ÷ÑÓ³Ù¡£
ÓÃXORÇåÁãÒ»¸ö¼Ä´æÆ÷µÄ·½·¨²¢²»ÄÜ´òÆÆËü¶ÔÇ°ÃæÖ¸ÁîµÄÒÀÀµ£º
¡¡¡¡¡¡¡¡DIV EBX
¡¡¡¡¡¡¡¡MOV [MEM]£¬ EAX
¡¡¡¡¡¡¡¡MOV EAX£¬ 0 ¡¡¡¡¡¡¡¡; ´òÆÆÒÀÀµ
¡¡¡¡¡¡¡¡XOR
EAX£¬ EAX ¡¡¡¡¡¡; ×èÖ¹²¿·Ö¼Ä´æÆ÷ÑÓ³Ù
¡¡¡¡¡¡¡¡MOV AL£¬ CL
¡¡¡¡¡¡¡¡ADD EBX£¬ EAX
Á½´Î°ÑEAXÉèΪ0¿´ÉÏÈ¥¶àÓ࣬µ«ÒªÖªµÀÈç¹ûûÓÐMOV EAX£¬0£¬ÄÇôºóÐøµÄÖ¸Áî±ØÐëµÈ´ý³ý·¨ÂýÖ¸Áî½áÊø£¬Ã»ÓÐXOR
EAX£¬EAXÔò»á²úÉú²¿·Ö¼Ä´æÆ÷ÑÓ³Ù¡£
FNSTSW
AXÖ¸ÁîÊÇÌØÊâµÄ£ºÔÚ32λģʽÏÂËüµÄÐÐΪ¾ÍºÍдÕû¸öEAXÒ»Ñù¡£ÊÂʵÉÏ£¬ÔÚ32λģʽÏÂËü×öµÄÊÂÇéÀàËÆÓÚ£º
¡¡¡¡¡¡AND EAX£¬0FFFF0000h / FNSTSW TEMP / OR EAX£¬TEMP
Òò´Ë32λģʽÏ£¬ÄãÔÚ¸ÃÖ¸ÁîºóÃæ¶ÁEAX²»»á·¢Éú²¿·Ö¼Ä´æÆ÷ÑÓ³Ù£º
¡¡¡¡¡¡ FNSTSW AX / MOV EBX£¬EAX ¡¡¡¡;
Ö»ÔÚ16λģʽÏÂÓÐÑÓ³Ù
¡¡¡¡¡¡ MOV AX£¬0 / FNSTSW AX ¡¡¡¡¡¡;
Ö»ÔÚ32λģʽÏÂÓÐÑÓ³Ù
19.2
²¿·Ö±êÖ¾ÑÓ³Ù
±êÖ¾¼Ä´æÆ÷Ò²»áÒýÆð²¿·Ö¼Ä´æÆ÷ÑÓ³Ù£º
¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡ CMP EAX£¬ EBX
¡¡¡¡¡¡¡¡INC ECX
¡¡¡¡¡¡¡¡JBE XX ; ²¿·Ö±êÖ¾ÑÓ³Ù
JBEÖ¸Áî¼È¶Á½øÎ»±êÖ¾(CF)ÓÖ¶ÁÁã±êÖ¾(ZF)¡£
ÒòΪINCÖ¸ÁîÐÞ¸ÄZF£¬²»ÐÞ¸ÄCF£¬ÔÚJBEÖ¸Áî½áºÏCF(CMPÐÞ¸ÄCF)ºÍZF(INCÐÞ¸ÄZF)֮ǰ£¬Ëü±ØÐëµÈ´ýǰÁ½ÌõÖ¸ÁîµÄÒýÍË¡£ÕâÖÖÇéÐÎÓëÆä˵ÊǹÊÒâ½øÐбêÖ¾µÄ×éºÏ£¬²»Èç˵¿ÉÄÜÊÇÒ»¸öbug¡£
¸ÄÕýbugµÄ·½·¨ÊÇÓÃADD ECX£¬1È¡´úINC ECX¡£ ÀàËÆÒýÆð²¿·Ö±êÖ¾ÑÓ³ÙbugÊÇSAHF / JL XX¡£
JLÖ¸Áî²âÊÔ·ûºÅ±êÖ¾(SF)ºÍÒç³ö±êÖ¾(OF)£¬µ«SAHFÖ¸Áî²»¸Ä±äÒç³ö±êÖ¾¡£ ¸ÄÕýbugµÄ·½·¨ÊÇÓÃJS XXÌæ»»JL XX¡£
³öºõÒâÁϵÄÊÇ(ÓëIntelÊÖ²áÉÏ˵µÄÏà·´)£¬µ±ÄãÔÚÒ»ÌõÐÞ¸ÄÁËһЩ±êÖ¾µÄÖ¸ÁîÖ®ºóÖ»¶ÁһЩûÓÐÐ޸ĹýµÄ±êÖ¾£¬Ò²»á²úÉú²¿·Ö±êÖ¾ÑÓ³Ù£º
¡¡¡¡¡¡¡¡CMP EAX£¬ EBX
¡¡¡¡¡¡¡¡INC ECX
¡¡¡¡¡¡¡¡JC XX ¡¡¡¡¡¡¡¡;
²¿·Ö±êÖ¾ÑÓ³Ù
µ«Ö»¶ÁÐ޸Ĺý±êÖ¾ÔòûÓÐÑÓ³Ù£º
¡¡¡¡¡¡ CMP EAX£¬ EBX
¡¡¡¡¡¡¡¡INC ECX
¡¡¡¡¡¡¡¡JE XX ¡¡¡¡¡¡¡¡; ÎÞÑÓ³Ù
²¿·Ö±êÖ¾ÑÓ³Ù¿ÉÄÜ·¢ÉúÔÚÄÇЩ¶ÁºÜ¶à±ê־λµÄÖ¸ÁîÉÏ£¬Ò²¾ÍÊÇLAHF£¬PUSHF£¬PUSHFD¡£
ÒÔÏÂÖ¸ÁîºóÃæÈô¸úLAHF»òPUSHF(D)»áÓв¿·Ö±êÖ¾ÑÓ³Ù£ºINC£¬ DEC£¬ TEST£¬ λ ²âÊÔ£¬ λɨÃ裬 CLC£¬ STC£¬ CMC£¬ CLD£¬
STD£¬ CLI£¬ STI£¬ MUL£¬ IMULºÍËùÓÐÒÆÎ»¡¢Ñ»·ÒÆÎ»¡£ ÒÔÏÂÖ¸Áî²»»áÒýÆð²¿·Ö±êÖ¾ÑÓ³Ù£ºAND£¬ OR£¬ XOR£¬ ADD£¬ ADC£¬ SUB£¬
SBB£¬ CMP£¬ NEG¡£ Ææ¹ÖµÄÊÇTESTºÍANDµÄÐÐΪ²»Ò»ÑùµÄ¡ª¡ª¾¡¹Ü¸ù¾Ý¶¨Ò壬ËüÃÇȷʵ¶Ô±êÖ¾¼Ä´æÆ÷×öÁËͬÑùµÄÊÂÇé¡£
Äã¿ÉÒÔÓÃSETccÖ¸ÁîÈ¡´úLAHF»òPUSHF(D)À´´¢´æÒ»¸ö±êÖ¾£¬±ÜÃâÑÓ³Ù¡£
±ÈÈç:
¡¡¡¡¡¡¡¡INC EAX / PUSHFD ; ÑÓ³Ù
¡¡¡¡¡¡¡¡ADD EAX£¬1 / PUSHFD ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬1 / PUSHFD ; ÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬1 / OR EAX£¬EAX / PUSHFD ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡TEST EBX£¬EBX / LAHF ; ÑÓ³Ù
¡¡¡¡¡¡¡¡AND EBX£¬EBX / LAHF ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡TEST EBX£¬EBX / SETZ AL ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡CLC / SETZ AL ; ÑÓ³Ù
¡¡¡¡¡¡¡¡CLD / SETZ AL ; ÎÞÑÓ³Ù
²¿·Ö±êÖ¾Ñӳٵijͷ£´óÔ¼ÊÇ4¸öʱÖÓ¡£
19£®3 ÒÆÎ»ºÍÑ»·ÒÆÎ»ºóµÄ±êÖ¾ÑÓ³Ù
ÔÚÒÆÎ»»òÑ»·ÒÆÎ»ºó¶ÁÈÎÒâ±ê־룬»á·¢ÉúÀàËÆ²¿·Ö±êÖ¾ÑÓ³ÙµÄÑÓ³Ù£¬³ýÁËÒÆÎ»ºÍÑ»·ÒÆÎ»µÄλÊýÊÇ1ÇÒΪ¼òÒ׸ñʽ(²»ÓüÆÊýÆ÷)µÄÇé¿ö:
¡¡¡¡¡¡¡¡SHR EAX£¬1 / JZ XX
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬2 / JZ XX ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡; ÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬2 / OR EAX£¬EAX / JZ XX ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬5 / JC XX ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡;
ÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬4 / SHR EAX£¬1 / JC XX ¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡SHR EAX£¬CL / JZ XX ¡¡¡¡¡¡¡¡¡¡;
ÄÄÅÂCL=1Ò²ÓÐÑÓ³Ù
¡¡¡¡¡¡¡¡SHRD EAX£¬EBX£¬1 / JZ XX ¡¡¡¡¡¡; ÑÓ³Ù
¡¡¡¡¡¡¡¡ROL EBX£¬8 / JC XX ¡¡¡¡¡¡¡¡¡¡¡¡; ÑÓ³Ù
ÕâÖÖÀàÐ͵ÄÑÓ³Ù´óÔ¼ÊÇ4¸öʱÖÓ¡£
19£®4
²¿·ÖÄÚ´æÑÓ³Ù
²¿·ÖÄÚ´æÑÓ³ÙÓ벿·Ö¼Ä´æÆ÷ÑÓ³ÙÓÐЩÏàÏñ¡£µ±Äã¶Ôͬһ¸öÄÚ´æµØÖ·£¬»ìºÏ²»Í¬³ß´çµÄÊý¾Ý½øÐвÙ×÷ʱ·¢Éú£º
¡¡¡¡¡¡¡¡MOV BYTE PTR [ESI]£¬ AL
¡¡¡¡¡¡¡¡MOV EBX£¬ DWORD PTR [ESI] ; ²¿·ÖÄÚ´æÑÓ³Ù
ÔÚ´Ë£¬ÒòΪ´¦ÀíÆ÷±ØÐë°ÑALд»ØµÄ1¸ö×ֽںͺóÃæ3¸öÔÀ´ÔÚÄÚ´æÖеÄ×Ö½Ú×éºÏ£¬ÒԵõ½ÐèÒª¶Á½øEBXµÄ4¸ö×Ö½Ú£¬ËùÒԻᷢÉúÑÓ³Ù¡£
³Í·£´óÔ¼ÊÇ7-8¸öʱÖÓ¡£
ºÍ²¿·Ö¼Ä´æÆ÷ÑÓ³Ù²»Í¬µÄÊÇ£¬µ±Äã°ÑÒ»¸ö´ó³ß´çµÄ²Ù×÷ÊýдÈëÄڴ棬Ȼºó¶ÁÆäÖеÄÒ»²¿·ÖÇÒÕⲿ·ÖµÄÆðʼµØÖ·ÓëÔÀ´²»Í¬Ê±£¬Ò²»áÓв¿·ÖÄÚ´æÑÓ³Ù£º
¡¡¡¡¡¡¡¡MOV DWORD PTR [ESI]£¬ EAX
¡¡¡¡¡¡¡¡MOV BL£¬ BYTE PTR [ESI] ¡¡; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡MOV BH£¬ BYTE PTR [ESI+1] ; ÑÓ³Ù
Äã¿ÉÒÔͨ¹ý°Ñ×îºóÒ»ÐиijÉMOV
BH£¬AHÀ´±ÜÃâÑÓ³Ù£¬µ«ÕâÖÖ½â¾ö·½·¨ÔÚÒÔÏÂÇé¿öÊÇ×ö²»µ½µÄ£º
¡¡¡¡¡¡¡¡FISTP QWORD PTR [EDI]
¡¡¡¡¡¡¡¡MOV
EAX£¬ DWORD PTR [EDI]
¡¡¡¡¡¡¡¡MOV EDX£¬ DWORD PTR [EDI+4] ;
ÑÓ³Ù
ÓÐȤµÄÊÇ£¬ÔÚдºóÈç¹û¶ÁÒ»¸öÍêÈ«²»Í¬µÄµØÖ·£¬Ö»ÊÇÅöÇÉÓëдµÄµØÖ·ÔÚ²»Í¬µÄcacheÐÐÓÐÏàͬ×éֵʱ£¬Ò²»áÓв¿·ÖÄÚ´æÑÓ³Ù£º
¡¡¡¡¡¡¡¡MOV BYTE PTR [ESI]£¬ AL
¡¡¡¡¡¡¡¡MOV EBX£¬ DWORD PTR [ESI+4092] ; ÎÞÑÓ³Ù
¡¡¡¡¡¡¡¡MOV ECX£¬ DWORD PTR [ESI+4096] ; ÑÓ³Ù
20£®ÒÀÀµ»·(PPro£¬PIIºÍPIII)
Ò»×éÖ¸ÁÆäÖÐÿһÌõÖ¸ÁîÒÀÀµÓÚǰһÌõÖ¸ÁîµÄ½á¹û£¬³ÆÕâ×éÖ¸ÁîÊÇÒ»¸öÒÀÀµ»·¡£
³¤µÄÒÀÀµ»·Ó¦¸Ã¾¡¿ÉÄܱÜÃ⣬ÒòΪËü×èÖ¹ÁËÂÒÐòÖ´ÐкͲ¢ÐÐÖ´ÐС£
±ÈÈç:
¡¡¡¡¡¡¡¡MOV EAX£¬ [MEM1]
¡¡¡¡¡¡¡¡ADD EAX£¬
[MEM2]
¡¡¡¡¡¡¡¡ADD EAX£¬ [MEM3]
¡¡¡¡¡¡¡¡ADD EAX£¬ [MEM4]
¡¡¡¡¡¡¡¡MOV [MEM5]£¬
EAX
ÔÚÕâ¸öÀý×ÓÖУ¬Ã¿ÌõADDÖ¸Áî²úÉú2Ìõ΢Â룬һÌõ´ÓÄÚ´æÖжÁ(¶Ë¿Ú2)£¬Ò»Ìõ×ö¼Ó·¨(¶Ë¿Ú0»ò1)¡£
¶ÁÄÚ´æµÄ΢Âë¿ÉÒÔÂÒÐòÖ´ÐУ¬µ«¸÷Ìõ¼Ó·¨Î¢Âë¶¼±ØÐëµÈ´ýÇ°ÃæµÄ¼Ó·¨Î¢ÂëÍê³É¡£ Õâ¸öÒÀÀµ»·Ö´ÐеÄʱ¼ä²¢²»³¤£¬ÒòΪÿ¸ö¼Ó·¨Ö»ÐèÒªÒ»¸öʱÖÓ¡£
µ«Èç¹ûÄãÓÐÖîÈç³Ë·¨ÕâÑùµÄÂýÖ¸ÁÉõÖÁ¸ü»µµÄ³ý·¨ÐγÉÒÀÀµ»·£¬ÄÇôÃ÷ÏÔÄãÓ¦¸Ã×öһЩÊÂÇéÀ´´òÆÆÒÀÀµ»·¡£ ¿ÉÒÔÓöà¸öÀÛ¼ÓÆ÷ʵÏÖÕâ¸öÄ¿µÄ£º
¡¡¡¡¡¡¡¡MOV EAX£¬ [MEM1] ; ¿ªÊ¼µÚÒ»¸ö»·
¡¡¡¡¡¡¡¡MOV EBX£¬ [MEM2] ; ÓÃÁíÒ»¸öÀÛ¼ÓÆ÷¿ªÊ¼µÚ¶þ¸ö»·
¡¡¡¡¡¡¡¡IMUL EAX£¬ [MEM3]
¡¡¡¡¡¡¡¡IMUL EBX£¬
[MEM4]
¡¡¡¡¡¡¡¡IMUL EAX£¬ EBX ; ×îºó½áºÏÁ½¸ö»·
¡¡¡¡¡¡¡¡MOV [MEM5]£¬ EAX
ÕâÀµÚ¶þ¸ö³Ë·¨Ö¸Áî¿ÉÒÔÔÚµÚÒ»¸ö½áÊøÖ®Ç°¿ªÊ¼¡£
ÒòΪ³Ë·¨Ö¸Á·Ñ4¸öÖÜÆÚÇÒÊÇÍêÈ«Á÷Ë®»¯µÄ£¬ËùÒÔÄã×î¶à¿ÉÉè4¸öÀÛ¼ÓÆ÷¡£
³ý·¨ÊÇ·ÇÁ÷Ë®»¯µÄ£¬Òò´ËÄã²»ÄÜΪ³ý·¨ÒÀÀµ»·×öÀàËÆµÄÊÂÇé¡£µ±È»£¬Äã¿ÉÒÔÏȽ«ËùÓеijýÊýÏà³Ë£¬×îºóÔÙ×öÒ»¸ö³ý·¨¡£
¸¡µãÖ¸ÁîµÄÑÓ³Ù±ÈÕûÐÍÖ¸Áî´ó£¬Òò´ËÄãÓ¦¸ÃÃ÷È·µØ´òÆÆ³¤µÄ¸¡µãÒÀÀµ»·£º
¡¡¡¡¡¡¡¡FLD [MEM1] ; ¿ªÊ¼µÚÒ»¸ö»·
¡¡¡¡¡¡¡¡FLD [MEM2] ; ÓÃÁíÒ»¸öÀÛ¼ÓÆ÷¿ªÊ¼µÚ¶þ¸ö»·
¡¡¡¡¡¡¡¡FADD [MEM3]
¡¡¡¡¡¡¡¡FXCH
¡¡¡¡¡¡¡¡FADD [MEM4]
¡¡¡¡¡¡¡¡FXCH
¡¡¡¡¡¡¡¡FADD [MEM5]
¡¡¡¡¡¡¡¡FADD ;
×îºó°Ñ»·½áºÏ
¡¡¡¡¡¡¡¡FSTP [MEM6]
ÄãÐèÒªºÜ¶àFXCHÖ¸Á²»Óõ£ÐÄ£¬ËüÃǺܡ°±ãÒË¡±¡£
¾¡¹ÜÔÚRAT£¬ROBºÍÒýÍËÕ¾ÖÐFXCHÖ¸ÁîÒ²±»¼ÆÎª1Ìõ΢Â룬µ«ÔÚRATÖÐFXCHÖ¸Áîͨ¹ý¼Ä´æÆ÷ÖØÃüÃû±»¡°»¯½â¡±£¬´Ó¶ø²»»á¸øÖ´Ðж˿ÚÔì³ÉÈκθºÔØ¡£
Èç¹ûÒÀÀµ»·ºÜ³¤£¬ÄãÐèÒªÉè3¸öÀÛ¼ÓÆ÷£º
¡¡¡¡¡¡¡¡FLD [MEM1] ; ¿ªÊ¼µÚÒ»¸ö»·
¡¡¡¡¡¡¡¡FLD [MEM2] ; ¿ªÊ¼µÚ¶þ¸ö»·
¡¡¡¡¡¡¡¡FLD
[MEM3] ; ¿ªÊ¼µÚÈý¸ö»·
¡¡¡¡¡¡¡¡FADD [MEM4] ; µÚÈý¸ö»·
¡¡¡¡¡¡¡¡FXCH ST(1)
¡¡¡¡¡¡¡¡FADD [MEM5] ;
µÚ¶þ¸ö»·
¡¡¡¡¡¡¡¡FXCH ST(2)
¡¡¡¡¡¡¡¡FADD
[MEM6] ; µÚÒ»¸ö»·
¡¡¡¡¡¡¡¡FXCH ST(1)
¡¡¡¡¡¡¡¡FADD [MEM7] ; µÚÈý¸ö»·
¡¡¡¡¡¡¡¡FXCH
ST(2)
¡¡¡¡¡¡¡¡FADD [MEM8] ; µÚ¶þ¸ö»·
¡¡¡¡¡¡¡¡FXCH ST(1)
¡¡¡¡¡¡¡¡FADD ¡¡¡¡¡¡¡¡;
½áºÏ1¡¢3»·
¡¡¡¡¡¡¡¡FADD ¡¡¡¡¡¡¡¡; ÓëµÚ2¸ö»·½áºÏ
¡¡¡¡¡¡¡¡FSTP [MEM9]
²»Òª°ÑÖмä½á¹û´æÈëÄÚ´æºóÂíÉ϶Á³ö£º
¡¡¡¡¡¡¡¡MOV [TEMP]£¬ EAX
¡¡¡¡¡¡¡¡MOV EBX£¬
[TEMP]
ÊÔͼÔÚÇ°ÃæµÄдÄÚ´æ²Ù×÷Íê³É֮ǰ´ÓÏàͬµØÖ·¶Á»á´øÀ´³Í·£¡£ ¾ÍÏñÉÏÃæµÄÀý×ÓÄÇÑù¡£¿ÉÒÔ°Ñ×îºóÒ»ÌõÖ¸Áî¸Ä³ÉMOV
EBX£¬EAX»òÔÚÁ½ÌõÖ¸ÁîÖ®¼ä²åÈëһЩÆäËüÖ¸Áî¡£
ÓÐÒ»ÖÖÇéÐÎʹÄã²»¿É±ÜÃâµØÒª°ÑÖмä½á¹û´æÈëÄڴ棬¼´´ÓÒ»¸öÕûÐͼĴæÆ÷´«ÊäÊý¾Ýµ½Ò»¸ö¸¡µã¼Ä´æÆ÷£¬·´Ö®ÒàÈ»¡£ ±ÈÈ磺
¡¡¡¡¡¡¡¡MOV EAX£¬ [MEM1]
¡¡¡¡¡¡¡¡ADD EAX£¬ [MEM2]
¡¡¡¡¡¡¡¡MOV [TEMP]£¬
EAX
¡¡¡¡¡¡¡¡FILD [TEMP]
Èç¹ûÔÚTEMPµÄд²Ù×÷ºÍTEMPµÄ¶Á²Ù×÷Ö®¼äÄãûÓÐÆäËüÖ¸Áî¿É²åÈ룬ÄÇôÄã¿ÉÒÔ¿¼ÂÇÓø¡µã¼Ä´æÆ÷È¡´úEAX:
¡¡¡¡¡¡¡¡FILD [MEM1]
¡¡¡¡¡¡¡¡FIADD [MEM2]
Á¬ÐøµÄÌø×ª¡¢µ÷Óúͷµ»ØÒ²¿ÉÒÔ¿´×÷ÊÇÒÀÀµ»·¡£ ¶ÔÓÚÕâЩָÁÍÌÍÂÁ¿ÊÇÿ2¸öʱÖÓÖÜÆÚ1¸ö×ªÒÆÖ¸Áî¡£
Òò´ËÍÆ¼öÄãÔÚÕâÐ©×ªÒÆÖ¸ÁîÖÐ¼ä¸ø´¦ÀíÆ÷һЩÆäËüµÄÊÂÇé×ö¡£
21. ѰÕÒÆ¿¾±(PPro£¬PIIºÍPIII)
ÔÚÕâЩ´¦ÀíÆ÷ÉÏ×÷´úÂëÓÅ»¯Ê±£¬·ÖÎöÆ¿¾±µÄÔÒòºÜÖØÒª¡£
µ±ÓÐÒ»¸öÒªº¦µÄÆ¿¾±´æÔÚʱ£¬»¨Ê±¼äÓÅ»¯²»ÊÇÆ¿¾±µÄ·½ÃæÊÇûÓÐÒâÒåµÄ¡£
Èç¹ûÄã¹À¼Æµ½Ö¸ÁîcacheʧЧ£¬ÄÇôÄãÓ¦¸ÃÖØ×é´úÂ룬½«ÓõÃ×î¶àµÄ²¿·Ö·ÅÔÚÒ»Æð¡£
Èç¹ûÄã¹À¼ÆÓкܶà´ÎÊý¾ÝcacheʧЧ£¬ÄÇô²»ÒªÔÙÏëÆäËüÊÂÇéÁË£¬¼¯Öо«Á¦ÓÚÖØ×éÊý¾Ý¼õÉÙcacheʧЧµÄ´ÎÊý£¨µÚ7Õ£©£¬ÇÒÒª±ÜÃâÔÚ¶ÁÊý¾ÝcacheʧЧºó´æÔÚÒ»¸ö³¤µÄÒÀÀµ»·£¨µÚ20Õ£©¡£
Èç¹ûÄãÓкܶà³ý·¨£¬ÄÇôÊÔ׿õÉÙËüÃÇ£¨µÚ27.2½Ú£©£¬ÇÒ±£Ö¤´¦ÀíÆ÷ÔÚ×ö³ý·¨ÆÚ¼äÓÐÆäËüÊÂÇé×ö¡£
ÒÀÀµ»·ÓзÁ°ÂÒÐòÖ´ÐеÄÇãÏò£¨µÚ20Õ£©£¬ÊÔ×Å´òÆÆ³¤µÄÒÀÀµ»·£¬ÓÈÆäÊÇÆäÖаüÀ¨Ïñ³Ë·¨¡¢³ý·¨ºÍ¸¡µãÖ¸ÁîÕâÑùµÄÂýÖ¸ÁîµÄʱºò¡£
Èç¹ûÄãÓÐÐí¶àÌø×ª¡¢µ÷Óᢻò·µ»Ø£¬ÓÈÆäÊÇÓдóÁ¿²»´óºÃÔ¤²âµÄ×ªÒÆÖ¸Áîʱ£¬ÊÔ×űÜÃâһЩ£¬¿ÉÄܵϰÓÃÌõ¼þ´«Êä´úÌæÌõ¼þÌø×ª£¬Óúê´úÌæÐ¡µÄ¹ý³Ì£¨µÚ22.3½Ú£©¡£
Èç¹ûÄã»ìÓÃÁ˲»Í¬³ß´çµÄÊý¾Ý£¨8£¬16ºÍ32룩£¬ÄÇôÁôÒⲿ·ÖÑÓ³Ù¡£
Èç¹ûÓÃÁËPUSHF»òLAHFÖ¸ÁÄÇôÁôÒⲿ·Ö±êÖ¾ÑÓ³Ù¡£ ±ÜÃâÔÚÒÆÎ»»òÑ»·ÒÆÎ»Êý´óÓÚ1µÄÖ¸Áîºó²âÊÔ±ê־루µÚ19Õ£©¡£
Èç¹ûÄãÒÔÒ»¸öʱÖÓ3Ìõ΢ÂëµÄÍÌÍÂÁ¿ÎªÄ¿±ê£¬ÄÇôҪעÒâȡָÁîºÍÖ¸Áî½âÂë¿ÉÄܵÄÑÓ³Ù£¨µÚ14Õº͵Ú15Õ£©£¬ÌرðÊÇÔÚСѻ·ÖС£
Ò»¸öʱÖÓÖÜÆÚ×î¶à¶Á2¸öÓÀ¾Ã¼Ä´æÆ÷µÄÏÞÖÆ¿ÉÄÜ»áʹһ¸öʱÖÓµÄ΢ÂëÍÌÍÂÁ¿¼õΪ3ÌõÒÔÏ£¨µÚ16.2½Ú£©¡£
Èç¹ûÄã¾³£ÔڼĴæÆ÷д²Ù×÷µÄ4¸ö¶àʱÖÓÒÔºó¶Á¸Ã¼Ä´æÆ÷£¬ÕâÖÖÏÞÖÆ¿ÉÄܻᷢÉú¡£ ±ÈÈ磬Äã¾³£ÓÃÖ¸Õë¶ÔÊý¾ÝѰַ£¬µ«ºÜÉÙÐÞ¸ÄÕâЩָÕë¡£
Ò»¸öʱÖÓ3Ìõ΢ÂëµÄÍÌÍÂÁ¿µÄ±ØÒªÌõ¼þÊǸ÷¸öÖ´Ðж˿ڵõ½Î¢ÂëÊý²»Äܳ¬¹ý×ÜÊýµÄÈý·ÖÖ®Ò»£¨µÚ17Õ£©¡£
ÒýÍËÕ¾¿ÉÒÔÔÚÒ»¸öʱÖÓ´¦Àí3Ìõ΢Â룬µ«¶ÔÓÚ´¦Àí·¢ÉúµÄÌø×ªÖ¸Áî²»ÊǺܸßЧ£¨µÚ18Õ£©¡£
22.
·ÖÖ§ºÍÌø×ª(ËùÓд¦ÀíÆ÷)
±¼ÌÚ¼Ò×åµÄ´¦ÀíÆ÷ÊÔͼԤ²âÌø×ªµÄλÖã¬Ìõ¼þÌø×ªÊÇ·ñ·¢Éú¡£Èç¹ûÔ¤²âÕýÈ·£¬Í¨¹ýÔÚÌø×ª·¢Éú֮ǰ¶ÁÈ¡ºóÐøÖ¸Áî½øÈë¹ÜµÀ²¢½âÂ룬Äܹ»½Úʡһ´ó±Êʱ¼ä£»Èç¹ûÔ¤²âʧ°Ü£¬¹ÜµÀ±»ÇåÏ´£¬»¨µÄ´ú¼ÛÈ¡¾öÓڹܵÀµÄ³¤¶È¡£
Ô¤²â»ùÓÚ·ÖÖ§Ä¿±ê»º´æ²¿¼þ(Branch Target Buffer
£¬¼ò³Æ BTB )£¬ËüΪÿһ¸ö·ÖÖ§´æÁËÀúÊ·¼Ç¼»òÌø×ªÖ¸ÁʹԤ²â»ùÓÚÿÌõÖ¸ÁîÖ´ÐеÄÀúÊ·¼Ç¼¡£
BTB×éÖ¯µÃÏñÒ»¸ö×éÏàÁªcache£¬ÄÇÀïеıíÏî°´ÕÕÎ±Ëæ»úÌæ»»Ëã·¨·ÖÅä¡£
ΪÁËÓÅ»¯´úÂë£¬ÖØÒªµÄÊÇÒª¼õÉÙÔ¤²âʧ°ÜµÄ´ú¼Û¡£ ÕâÐèÒªºÜºÃµØÀí½â·ÖÖ§Ô¤²âµÄ¹¤×÷»úÖÆ¡£
·ÖÖ§Ô¤²â»úÖÆÔÚÈκεط½¶¼Ã»ÓкܺõØÃèÊö£¬°üÀ¨IntelµÄÊֲᡣ
Òò´ËÎÒÕâÀï×öÁËÏêϸµÄÃèÊö¡£ ÕâЩÐÅÏ¢»ùÓÚÎÒµÄÑо¿(ÔÚ PPlain µÄ Karki Jitendra Bahadur µÄ°ïÖúÏÂ)¡£
½ÓÏÂÈ¥£¬ÎÒÒªÓÃÊõÓï"¿ØÖÆ×ªÒÆÖ¸Áî"´úÌæËùÓÐÄܹ»Ê¹ip±ä»¯µÄÖ¸Á°üÀ¨Ìõ¼þ\·ÇÌõ¼þÌø×ª£¬Ö±½Ó\¼ä½ÓÌø×ª£¬½ü\Ô¶£¬Ìø×ª£¬µ÷Ó㬷µ»Ø¡£
ËùÓÐÕâЩָÁî¶¼ÒªÔ¤²â¡£
22.1 PPlainµÄ·ÖÖ§Ô¤²â
PPlainµÄ·ÖÖ§Ô¤²â»úÖÆ±ÈÆäËüÈýÖÖ´¦ÀíÆ÷¸´Ôӵöࡣ
¹ØÓÚÕâ¸ö¿ÎÌ⣬ÔÚIntelÎĵµ»òÆäËüµØ·½µÄÐÅÏ¢Ö±½ÓÎóµ¼¶ÁÕߣ¬¸ù¾ÝÕâЩÎĵµ»áд³ö²»¹»ÀíÏëµÄ´úÂë¡£
22.1.1
BTBµÄ×éÖ¯£¨PPlain£©
PPlainÓÐÒ»¸ö·ÖÖ§Ä¿±ê»º´æ(BTB)£¬ËüÄÜ»º´æ256ÌõÌø×ªÖ¸Áî¡£
¸ÃBTBÏñÒ»¸ö4·µÄ×éÏàÁªcache£¬Ã¿Â·ÓÐ64Ïî¡£ ÕâÒâζ×ÅBTB²»ÄÜ´¢´æ4¸öÒÔÉÏ×éÖµÏàͬµÄÏî¡£
ºÍÊý¾Ýcache²»Í¬µÄÊÇ£¬BTBÓÃÁËÎ±Ëæ»úÊýÌæ»»Ëã·¨£¬ÕâÒâζ×ÅÒ»¸öÐÂÏî²»Ò»¶¨Ìæ»»¾ßÓÐÏàͬ×éÖµµÄ×î½ü×îÉÙʹÓõÄÏî¡£ ×éÖµµÄ¼ÆËã·½·¨ºóÃæ½éÉÜ¡£
ÿ¸öBTBÏî´æ´¢Ä¿±êÌø×ªµØÖ·ºÍÔ¤²â״̬£¬¿ÉÄÜÓÐËÄÖÖ״̬:
״̬0:Ç¿ÁÒÔ¤ÑÔ²»·¢Éú
״̬1:ÈõÔ¤ÑÔ²»·¢Éú
״̬2:ÈõÔ¤ÑÔ·¢Éú
״̬3:Ç¿ÁÒÔ¤ÑÔ·¢Éú
ÔÚ״̬2»ò3£¬Ò»¸öÌø×ªÖ¸Áî±»Ô¤²âΪ½«Òª·¢Éú£»ÔÚ״̬0»ò1£¬±»Ô¤²âΪ²»·¢Éú¡£
״̬±ä»¯¾ÍÏñÒ»¸ö2λµÄ¼ÆÊýÆ÷£¬ÔÚ·¢Éúºó£¬×´Ì¬ÖµÔö¼Ó£»ÔÚ²»·¢Éúºó£¬×´Ì¬Öµ¼õÉÙ¡£ ¼ÆÊýÆ÷ÊDZ¥ºÍ¼ÆÊý¶ø²»ÊÇ»·ÈƼÆÊý£¬Òò´Ëµ½ÁË0£¬Ëü²»ÔÙ¼õÉÙ£»µ½ÁË3£¬Ëü²»ÔÙÔö¼Ó¡£
¿´À´£¬Ó¦¸ÃÔ¤²âµÃÂù×¼£¬ÒòΪҪʹԤ²â½á¹û·¢Éú±ä»¯(±ÈÈçÒÔǰԤÑÔ²»·¢Éú£¬ÏÖÔÚ±ä³ÉÔ¤ÑÔ·¢Éú)£¬·ÖÖ§Ö¸Áî¿ÉÄÜÒªÁ½´Î±³ÀëËüÒÔǰµÄÐÐΪ¡£
È»¶ø£¬¸Ã»úÖÆµÄÒ»´óÈõµãÊÇBTB±íÏî´¦ÓÚ״̬0ÒâζןÃBTB±íÏîÊÇûÓÐÓõġ£ Òò´Ë´¦ÓÚ״̬0µÄBTB±íÏîÓÐÁËÒ²µÈÓÚûÓС£
ÕâÒâÒåÔÚÓÚ£¬Èç¹ûÒ»¸ö·ÖÖ§Ö¸ÁîûÓÐBTB±íÏÄÇôËü±»Ô¤²âΪ²»·¢Éú¡£ Õâ¸ÄÉÆÁËBTBµÄÀûÓã¬ÒòΪһ°ãµØ£¬ÄÇЩºÜÉÙ·¢ÉúµÄ·ÖÖ§Ö¸Áî²»»áÕ¼ÓÃBTB±íÏî¡£
ÏÖÔÚÈç¹ûÓÐÒ»Ìõ¼þ×ªÒÆÖ¸ÁËüûÓÐBTB±íÏî¡£ÄÇôһ¸öеÄÏî»á²úÉú£¬¸ÃÏîµÄ³õÖµ×ÜÊDZ»ÖÃΪ״̬3¡£ÕâÒâζ×ÅËü²»¿ÉÄÜ´Ó״̬0µ½×´Ì¬1(³ýÁ˺óÃæÌÖÂÛµÄÒ»ÖÖÌØÊâÇé¿ö)¡£Èç¹û·¢Éú£¬´Ó״̬0ÄãÖ»Äܵ½×´Ì¬3?¡£Èç¹û²»·¢Éú£¬·ÖÖ§±»ÒƳöBTB±í¡£
ÕâÊǸöÑÏÖØµÄÉè¼ÆÈ±ÏÝ¡£Í¨¹ý½«×´Ì¬ÖµÎª0µÄ±íÏîÈÓ³öBTB£¬²¢ÇÒ×ÜÊǽ«ÐµÄÏîÖÃΪ״̬3£¬Éè¼ÆÕßÏÔȻֻÓÅÏÈ¿¼ÂǰÑÎÞÌõ¼þÌø×ªºÍ¾³£·¢ÉúµÄ·ÖÖ§Ö¸ÁîµÄµÚÒ»´ÎÔËÐдú¼Û×îС»¯£¬¶ø²»¹ËÕâÑÏÖØÆÆ»µÁ˸ûúÖÆµÄ»ù±¾Ë¼Ï룬½µµÍÁËÄÚ²¿Ð¡Ñ»·µÄÐÔÄÜ¡£
Õâ»áʹµÃÒ»¸ö¾³£²»·¢ÉúµÄ·ÖÖ§Ö¸Áî±ØÐë¾¹ýÈý´ÎÔ¤²âʧ°Ü¡ª¡ªºÍÒ»¸ö¾³£·¢ÉúµÄ·ÖÖ§Ö¸ÁîÒ»Ñù¶à(ÏÔÈ»£¬Intel¹¤³ÌʦÃÇûÓÐ×¢Òâµ½Õâ¸öȱÏÝ£¬Ö±µ½ÎÒ¹«¿ªÁËÎҵķ¢ÏÖ)¡£
ΪÁËÑо¿Õâ¸ö²»¶Ô³Æ£¬Äã¿ÉÒÔ×éÖ¯ÄãµÄ·ÖÖ§Ö¸ÁʹËüÃÇ·¢ÉúµÄ¸ÅÂÊ´óÓÚ²»·¢ÉúµÄ¸ÅÂÊ¡£
¿´Õâ¸öif-then-elseÓï¾ä:
¡¡¡¡¡¡¡¡TEST
EAX£¬EAX
¡¡¡¡¡¡¡¡JZ A
¡¡¡¡¡¡ <·ÖÖ§
1>
¡¡¡¡¡¡¡¡JMP E
A: ¡¡¡¡<·ÖÖ§
2>
E:
Èç¹û·ÖÖ§1µÄ¸ÅÂʱȷÖÖ§2´ó£¬ ·ÖÖ§2ºÜÉÙÁ¬ÐøÖ´ÐÐ2´Î£¬ÄÇôÄã¿ÉÒÔ½»»»ÕâÁ½¸ö·ÖÖ§£¬ÕâÑùJA
AÖ¸Áî·¢ÉúµÄ¸ÅÂʾʹóÓÚ²»·¢ÉúµÄ¸ÅÂÊÁË£¬Ê¹ÏàÓ¦µÄBTB±íÏî½øÈë״̬3£¬ÕâÑù¿ÉÒÔ¼õÉÙÔ¤²âʧ°Ü£º
¡¡¡¡¡¡¡¡TEST EAX£¬EAX
¡¡¡¡¡¡¡¡JNZ A
¡¡¡¡¡¡ <·ÖÖ§ 2>
¡¡¡¡¡¡¡¡JMP E
A: ¡¡ <·ÖÖ§
1>
E:
(ÕâÓëIntelµÄÖ¸ÄÏÊÖ²áÖÐÍÆ¼öµÄÍêÈ«Ïà·´)¡£
ÓÐÀíÓɽ«¾³£Ö´ÐеķÖÖ§·ÅÔÚ·¢ÉúµÄλÖã¬È»¶ø£º
1.
°ÑºÜÉÙÖ´ÐеķÖÖ§Ô¶ÀëÄãµÄ´úÂëµ×²¿È´ÓÐÀûÓÚ¸ÄÉÆÖ¸ÁîcacheµÄÀûÓá£
2.
ʹºÜÉÙ·¢ÉúµÄ·ÖÖ§Ö¸Áî´ó¶àÊýʱ¼ä²»ÔÚBTBÄÚ£¬¿ÉÄܸÄÉÆBTBµÄÀûÓá£
3.
Èç¹ûÒ»Ìõ·ÖÖ§Ö¸ÁîÒòΪÆäËü·ÖÖ§Ö¸Áî¼ÓÈë¶ø±»¸Ï³öBTBµÄ»°£¬Ëü»á±»Ô¤²âΪ²»·¢Éú¡£
4.
Ö»ÓÐPPlain»úÉÏ´æÔÚ²»¶Ô³ÆµÄ·ÖÖ§Ô¤²â¡£
È»¶øÑ»·Ê½Ë¼Î¬ÊÇÓеã¶àÂÇÁË£¬Òò´ËÎÒÈÔÈ»ÍÆ¼öÊ¹Ìø×ªÖ¸ÁîµÄ·¢Éú¸ÅÂÊ´óÓÚ²»·¢Éú¡£
³ý·Ç·ÖÖ§2ʹÓøÅÂÊ̫СÁË£¬ÄÇô·ÖÖ§Ô¤²âµÄʧ°Ü¿ÉÒÔºöÂÔÁË£¬ÄÇô¿¼ÂÇIntelµÄÍÆ¼ö¡£
ͬÑùµÄ£¬ÄãÐèÒªÍêÉÆµØ×éÖ¯µ×²¿ÓзÖÖ§Ö¸ÁîµÄÑ»·£¬¾ÍÏñÏÂÃæµÄÀý×Ó£º
¡¡¡¡¡¡ MOV ECX£¬ [N]
¡¡L:
¡¡ MOV [EDI]£¬EAX
¡¡¡¡¡¡¡¡ADD EDI£¬4
¡¡¡¡¡¡¡¡DEC ECX
¡¡¡¡¡¡¡¡JNZ L
Èç¹ûNºÜ´ó£¬ÄÇôJNZÖ¸Áî»á´óÁ¿µØ·¢Éú£¬²»¿ÉÄÜÓÐÁ½´ÎÁ¬ÐøµÄ²»·¢Éú¡£
¿¼ÂÇÕâÑùÒ»ÖÖÇé¿ö¡ª¡ªÃ¿Á½´Î·¢ÉúÒ»´Î¡£
×ªÒÆÖ¸ÁîµÚÒ»´Î½øÈëBTBÏîµÄʱºòÊÇ״̬3£¬È»ºó¾Í»áÔÚ2ºÍ3Ö®¼äµßô¤¡£ ÕâÑùËüÿ´Î¶¼±»Ô¤²âΪ·¢Éú£¬µ¼ÖÂ50%µÄÔ¤²âʧ°Ü¡£ ¼Ù¶¨ÏÖÔÚËü±³ÀëÁ˹æÂÉ£¬ÓÐÁËÒ»´ÎÒâÍâµÄ²»·¢Éú¡£Ìø×ªÄ£Ê½ÈçÏÂ:
01010100101010101010101, £°±íʾ²»·¢Éú, 1±íʾ·¢Éú¡£
^ÒâÍâµÄ²»·¢ÉúÓÃ^±íʾ¡£¡¡ÔÚÕâ¸öʱäÖ®ºó£¬BTB±íÏÔÚ1ºÍ2Ö®¼äµßô¤£¬µ¼ÖÂ100%µÄÔ¤²âʧ°Ü¡£¡¡Õâ¸ö²»ÐÒµÄģʽ½«Ò»Ö±¼ÌÐø£¬Ö±µ½ÓÖÒ»¸ö0101µÄ±³Àë·¢Éú¡£¡¡ÕâÊÇÕâ¸ö·ÖÖ§Ô¤²â»úÖÆµÄ×Çé¿öÁË¡£
22.1.2 BTB¼Ç¼µÄÊÇǰһ¸öÖ¸Áî¶ÔµÄU¹ÜµÀÖ¸ÁîµÄµØÖ·
BTB»úÖÆ¼ÆËãµÄÊÇÖ¸Áî¶Ô£¬¶ø²»Êǵ¥ÌõÖ¸Áî¡£ Òò´Ë£¬ÎªÁË·ÖÎöBTB±íÏî´æÁËʲôµØÖ·£¬Äã±ØÐëÖªµÀÖ¸ÁîµÄÅä¶ÔÇé¿ö¡£
¶ÔÓÚÈκÎ×ªÒÆÖ¸ÁBTB±íÏî×ÜÊǼǼǰһ¸öÖ¸Áî¶ÔµÄU¹ÜµÀÖ¸ÁîµÄµØÖ·(²»Åä¶ÔµÄÖ¸ÁîÒ²¿´×÷Ò»¸ö"Ö¸Áî¶Ô")¡£ ±ÈÈç:
¡¡¡¡¡¡¡¡SHR EAX£¬1
¡¡¡¡¡¡¡¡MOV EBX£¬[ESI]
¡¡¡¡¡¡¡¡CMP
EAX£¬EBX
¡¡¡¡¡¡¡¡JB L
ÕâÀïSHRÖ¸ÁîÓëMOVÖ¸ÁîÅä¶Ô£¬CMPÓëJBÅä¶Ô¡£ Òò´Ë¶ÔÓÚJB LÖ¸ÁBTB±íÏî¼Ç¼ÁËSHR EAX£¬1µÄµØÖ·¡£
µ±µ½´ïÕâ¸öBTB±íÏî²¢ÇÒËü´¦ÓÚ״̬2»ò3£¬Pentium»á¶Á³öBTB±íÏîÖеÄÄ¿±êµØÖ·£¬¼ÓÔØLÖ®ºóµÄÖ¸Áî½øÈëÁ÷Ë®Ïß¡£ ÕâÒ»²½ÔÚ·ÖÖ§Ö¸ÁîJB
L±»½âÂë֮ǰ¾ÍÒÑ·¢Éú£¬Òò´Ë¶ÔÓÚ·ÖÖ§Ô¤²â£¬PentiumÖ»ÒÀÀµBTBÖеÄÐÅÏ¢¡£
ÄãÓ¦¸ÃÖªµÀ£¬Ö¸ÁîÔÚµÚÒ»´ÎÖ´ÐеÄʱºòºÜÉÙÅä¶ÔµÄ(¼ûµÚ°ËÕÂ)¡£
Èç¹ûÉÏÊöµÄÖ¸ÁîÍêÈ«²»Åä¶Ô£¬BTB±íÏî»á¼Ç¼CMPÖ¸ÁîµÄµØÖ·£¬¶øÕâ¶ÔÓÚÏÂÒ»´ÎÖ´ÐУ¨´ËʱָÁîÊÇÅä¶ÔµÄ£©ÏÔÈ»ÊÇ´íµÄ¡£
È»¶ø£¬¶àÊýÇé¿öÏÂPPlain×ã¹»´ÏÃ÷£¬ËüÒ»°ã²»»á¶Ô´ÓûʹÓùýµÄ"Ö¸Áî¶Ô"·ÖÅäBTB±íÏî¡£
Òò´ËÒªµ½µÚ¶þ´ÎÖ´ÐУ¬²Å»áÓÐBTB±íÏîµÄ·ÖÅä£»ÍÆÂÛÊÇÒªµ½µÚÈý´ÎÖ´ÐУ¬²Å»áÓзÖÖ§Ô¤²â
(²»¹ýÀýÍâµÄÊÇ£¬Èç¹ûµÚ¶þÌõÖ¸ÁîÊǵ¥×Ö½ÚÖ¸ÁÄÇôÔÚµÚÒ»´ÎÖ´ÐеÄʱºò£¬Äã¾Í»áµÃµ½Ò»¸öBTB±íÏ¶øÔÚµÚ¶þ´ÎÖ´ÐеÄʱºòÕâ¸ö±íÏîÊÇÎÞЧµÄ¡£
µ«¼ÈÈ»Õâ»ØBTB±íÏî¼Ç¼µÄÖ¸Á·¢Ë͵½V¹ÜµÀ£¬Õ⽫±»ºöÂÔ¶ø²»»á´øÀ´³Í·££¬ÒòΪBTB±íÏîÖ»¶ÁU¹ÜµÀµÄÖ¸Áî)¡£
Ò»¸öBTB±íÏîµÄidÊÇËüµÄ×éºÅ£¬µÈÓÚËü¼Ç¼µÄµØÖ·µÄ0-5λ¡£
6-31λҲ´æÈëBTB×öΪ±ê־λ¡£ µØÖ·²îΪ64×ֽڵı¶ÊýµÄµØÖ·½«ÓµÓÐÏàͬµÄ×éºÅ¡£ ×î¶àÔÊÐíÓÐËĸöBTB±íÏîÓµÓÐÏàͬµÄ×éºÅ¡£
Èç¹ûÄãÏë¼ì²éÊÇ·ñÄãµÄ×ªÒÆÖ¸ÁîÕùÓÃͬһ¸öBTB±íÏÄã±ØÐë±È½ÏËüµÄǰһ¸öÖ¸Áî¶ÔÖÐU¹ÜµÀÖ¸ÁîµØÖ·µÄ0-5λ¡£ ÕâºÜÒªÃüµÄ£¬ÎÒ´ÓÀ´Ã»Óмû¹ýÓÐÈËÕâô¸É¹ý¡£
ҲûÓÐʲô¹¤¾ß¿ÉÒÔ°ïÄã¸ÉÕâ¼þÊ¡£
22.1.3
Á¬ÐøµÄÌø×ª(PPlain)
µ±Ìø×ªÔ¤²âʧ°ÜµÄʱºò£¬Á÷Ë®Ïß±»ÇåÏ´¡£
Èç¹ûÏÂÒ»¸öÖ´ÐйýµÄÖ¸Áî¶ÔÒ²°üÀ¨×ªÒÆÖ¸ÁPPlain²»»á¼ÓÔØËüµÄÌø×ªÄ¿±ê¡£ ÒòΪÔÚÁ÷Ë®Ïß±»ÇåÏ´µÄʱºò²»ÄܼÓÔØÐµÄÌø×ªÄ¿±ê¡£
½á¹ûÊDz»¹ËµÚ¶þ¸ö×ªÒÆÖ¸ÁîµÄBTB±íÏî״̬£¬Ëü±»Ô¤²âΪ²»·¢Éú¡£
Òò´Ë£¬Èç¹ûµÚ¶þ¸ö×ªÒÆÊÇ·¢ÉúµÄ£¬ÄãÓÖ»áµÃµ½³Í·££¬ÄÄÅÂÊÂʵÉ϶ÔÓÚµÚ¶þ¸öÌø×ªÖ¸ÁBTB±íÏîµÃµ½ÁËÕýÈ·µÄ¸üС£
Èç¹ûÄãÓÐÒ»¸öºÜ³¤µÄ×ªÒÆÖ¸ÁîµÄÁ´£¬²¢ÇÒµÚÒ»¸ö×ªÒÆÖ¸ÁîÔ¤²âʧ°Ü£¬ÄÇôÁ÷Ë®Ï߻᲻¶ÏµØË¢Ð£¬ÔÚ´ËÆäÖÐÈç¹ûûÓв»·¢ÉúµÄ"Ö¸Áî¶Ô"£¬Äã¾Í»áÿ¸ö×ªÒÆÖ¸Áî¶¼Ô¤²âʧ°Ü¡£
×¶ËµÄÀý×ÓÊÇÒ»¸öÌø×ªÖÁËü±¾ÉíµÄÑ»·: ÿ´Îµþ´ú¶¼»áµÃµ½Ô¤²âʧ°ÜµÄ³Í·£¡£
Á¬ÐøµÄ×ªÒÆÖ¸Áî´øÀ´µÄÎÊÌ⻹²»Ö¹Õâ¸ö¡£
ÔÙÒ»¸öÎÊÌâÊÇÈç¹ûÄãÓÐBTB±íÏîºÍÊôÓÚËüµÄ×ªÒÆÖ¸ÁîÖ®¼äµÄÁíÒ»×ªÒÆÖ¸ÁÈç¹ûµÚÒ»¸ö×ªÒÆÖ¸ÁîÌø×ªµ½ÆäËüµØ·½£¬Ææ¹ÖµÄÊÂÇé·¢ÉúÁË¡£ ¿´Õâ¸öÀý×Ó:
¡¡¡¡¡¡¡¡SHR EAX£¬1
¡¡¡¡¡¡¡¡MOV EBX£¬[ESI]
¡¡¡¡¡¡¡¡CMP
EAX£¬EBX
¡¡¡¡¡¡¡¡JB L1
¡¡¡¡¡¡¡¡JMP L2
L1: ¡¡¡¡MOV EAX£¬EBX
¡¡¡¡¡¡¡¡INC EBX
µ±JB L1²»·¢ÉúµÄʱºò£¬¶ÔÓÚJMP L2£¬Äã»áµÃµ½Ò»¸ö¸½ÉÏCMP EAX£¬EBXµØÖ·µÄBTB±íÏî¡£ µ«Èç¹ûJB
L1·¢ÉúʱÇé¿öÓÖÈçºÎÄØ£¿ÔÚÕâ¸öʱºòJMP L2µÄBTB±íÏîÒѾ±»¶Áµ½£¬µ«´¦ÀíÆ÷²»ÖªµÀÏÂÒ»¸öÖ¸Áî¶Ô²»°üÀ¨×ªÒÆÖ¸ÁÒò´ËËü°ÑÖ¸Áî¶ÔMOV EAX£¬EBX /INC
EBXÔ¤²âÎªÌø×ªµ½L2¡£ Ô¤²â·Ç×ªÒÆÖ¸ÁîÎªÌø×ªµÄ³Í·£ÊÇ3¸öʱÖÓÖÜÆÚ¡£ JMP L2µÄBTB±íÏîµÄ״ֵ̬¼õ1£¬ÒòΪËü±»Ó¦ÓÃÓÚ²»·¢ÉúÌø×ªµÄÖ¸ÁîÉÏ¡£
Èç¹ûÎÒÃDz»¶ÏÔÚÑ»·ÖÐÌø×ªµ½L1£¬JMP L2µÄBTB±íÏî״̬»á±»¼õΪ1ºÍ0¡£ ÓÚÊÇÎÊÌâÒ»Ö±³öÏÖ£¬Ö±µ½Ä³Ò»´ÎJMP L2±»Ö´ÐС£
Ô¤²â·Ç×ªÒÆÖ¸ÁîÎªÌø×ªµÄ´ú¼Û½ö½ö·¢ÉúÔÚÌø×ªÖÁL1±»Ô¤²âµ½µÄÇé¿öÏ¡£
Èç¹ûJB L1ÊÇÔ¤²âʧ°ÜµÄÌø×ª£¬ÄÇôÁ÷Ë®Ïß±»ÇåÏ´£¬ÎÒÃDz»»áÏñÇ°ÃæÄÇÑù¼ÓÔØL2Õâ¸ö´íÎóÄ¿±ê¡£ËùÒÔÕâ»ØÎÒÃDz»»áÓÐÔ¤²â·Ç×ªÒÆÖ¸ÁîÎªÌø×ªµÄ³Í·££¬µ«JMP
L2µÄBTB±íÏî״ֵ̬»¹ÊǼõС¡£
ÏÖÔÚ¼Ù¶¨ÎÒÃǰÑINC
EBXÖ¸ÁîÌæ»»ÎªÁíÒ»¸öjumpÖ¸Áî¡£ ÄÇôÕâ¸öjumpÖ¸Áî»áÓúÍJMP
L2ÏàͬµÄBTB±íÏî(¸Ã±íÏîÔ¤²âÌø×ªµ½L2)£¬¸Ã±íÏî¿ÉÄÜ»áÔ¤²âµ½´íÎóµÄÄ¿±ê¶ø´øÀ´³Í·£(³ý·ÇÕâ¸öjumpÖ¸ÁîÅöÇÉÒ²ÒÔL2ΪĿ±ê)¡£
×ܽáһϣ¬Á¬ÐøµÄ×ªÒÆÖ¸Áî¿ÉÄܵ¼ÖÂÏÂÃæÎÊÌâ:
*Èç¹ûǰһ¸ö×ªÒÆÔ¤²âʧ°Ü£¬Á÷Ë®Ïß±»Ë¢Ð£¬ÎÞ·¨¼ÓÔØÏÂÒ»¸ö×ªÒÆÖ¸ÁîµÄ×ªÒÆÄ¿±ê(Ç¿ÖÆÔ¤²âΪ²»·¢Éú)
*BTB±íÏî¿ÉÄܱ»´íÎóµØÓÃÓÚ·Ç×ªÒÆÖ¸Á²¢ÇÒÔ¤²âËüÃÇÊÇÌø×ªµÄ¡£
*ÉÏÊöµÄÒ»¸öÍÆÂÛÊÇ:Ò»¸ö±»´íÎóÓ¦ÓõÄBTB±íÏîµÄ״ֵ̬»á¼õС£¬¿ÉÄܵ½ÒÔºóÕæÕýÊôÓÚËüµÄÌø×ªÒª·¢ÉúËüÈ´Ô¤²â²»·¢Éú¡£
ÓÉÓÚÕâ¸öÀíÓÉ£¬ÉõÖÁÎÞÌõ¼þÌø×ªµÄÖ¸Áî¶¼»á±» Ô¤²âΪ²»·¢Éú¡£
*Á½¸öºÜ½üµÄjumpÖ¸Áî¿ÉÄܻṲÓÃÒ»¸öBTB±íÏµ¼ÖÂÔ¤²âµ½´íÎóµÄÄ¿±ê¡£
ËùÓÐÕâЩ»ìÂÒ»á´ø¸øÄãÐí¶à³Í·£¡£
Òò´ËÄãÒªÃ÷È·±ÜÃâÔÚÒ»¸öËæ»ú×ªÒÆ(²»Ì«ºÃÔ¤²âµÄ)µÄÖ¸ÁîµÄºóÃæ£¬ºÍËü×ªÒÆÄ¿±êµÄºóÃæ½ô¸úÒ»¸ö°üÀ¨×ªÒÆÖ¸ÁîµÄÖ¸Áî¶Ô(Á½Ìõ×ªÒÆÖ¸ÁîÖ®¼äÖÁÉÙÒª¼ä¸ôÁ½ÌõÆäËüÖ¸Áî)¡£
Ò»¸öʵÀý:
¡¡¡¡¡¡¡¡CALL P
¡¡¡¡¡¡¡¡TEST EAX£¬EAX
¡¡¡¡¡¡¡¡JZ L2
L1£º ¡¡ MOV
[EDI]£¬EBX
¡¡¡¡¡¡¡¡ADD EDI£¬4
¡¡¡¡¡¡¡¡DEC
EAX
¡¡¡¡¡¡¡¡JNZ L1
L2£º ¡¡ CALL
P
¿´ÉÏÈ¥ÕâËÆºõÊÇÒ»¶Î"ÓÅÃÀµÄ"´úÂë:Ò»¸ö¹ý³Ìµ÷Ó㬵±¼ÆÊý²»Îª0µÄʱºòÀ´¸öÑ»·£¬ÔÙµ÷Óùý³Ì¡£ÄãÄÜ·¢ÏÖ¶àÉÙÎÊÌâÄØ?
Ê×ÏÈ£¬ÎÒÃÇ×¢Òâµ½P¹ý³ÌÔÚÁ½¸ö²»Í¬µÄλÖñ»µ÷Óá£
ÕâÒâζ×ÅPµÄ·µ»ØµØÖ·Ò»Ö±Ôڱ䣬´Ó¶ø£¬¶ÔPµÄ·µ»ØÖ¸Áî×ÜÊÇÔ¤²âʧ°Ü¡£
ÏÖÔÚ¼ÙÉèEAXÊÇ0¡£¶øÒòΪP¹ý³Ì·µ»ØµÄÔ¤²âʧ°Üµ¼ÖµÄÁ÷Ë®ÏßˢУ¬Ê¹µÃ¸ÃÌø×ªµ½L2£¬È´ÎÞ·¨¼ÓÔØËüµÄÄ¿±êµØÖ·¡£
È»ºó£¬ÒòΪJZ L2Ô¤²âʧ°Ü¶øË¢Ð£¬µÚ¶þ¸öPµ÷ÓÃÓÖÎÞ·¨¼ÓÔØËüµÄÄ¿±êµØÖ·¡£
ÎÒÃǾͽøÈëÁËÕâÑùÒ»¸ö"¾³½ç":ÒòΪµÚÒ»¸öjumpÔ¤²âʧ°Ü£¬Á¬ÐøµÄjumpµ¼ÖÂÁ÷Ë®Ïß²»¶ÏˢС£ JZ
L2µÄBTB±íÏî´æ´¢PµÄ·µ»ØÖ¸ÁîµÄµØÖ·£¬Õâ¸öBTB±íÏî»á±»´íÎóµØÓ¦ÓÃÓÚµÚ¶þ¸öPµ÷ÓúóµÄÈκÎÖ¸Áî¡£
µ«Õâµ¹²»»á´øÀ´³Í·££¬ÒòΪµÚ¶þ¸ö·µ»ØµÄÔ¤²âʧ°ÜÁ÷Ë®Ïß±»Ë¢ÐÂÁË¡£
ÏÖÔÚÎÒÃÇ¿¼ÂÇEAX·Ç0µÄÇé¿ö:ÒòΪˢУ¬JZ L2Ò»Ö±±»Ô¤²âΪ²»·¢Éú¡£ µÚ¶þ¸öPµ÷ÓõÄBTB±íÏî¼Ç¼TEST
EAX£¬EAXµÄµØÖ·¡£ Õâ¸ö±íÏî»á±»´íÎóµØÓÃÓÚMOV/ADDÖ¸Áî¶Ô£¬Ô¤²âËüÌø×ªµ½P¡£ ÕâÒýÆðˢУ¬×èÖ¹JNZ L1¼ÓÔØËüµÄÄ¿±ê¡£
Èç¹ûÎÒÃÇÒÔǰִÐйýÕâÀµÚ¶þ¸öPµ÷ÓûáÓÐÁíÒ»¸ö¸½×ÅDEC EAXµØÖ·µÄBTB±íÏî¡£
ÔÚµÚ¶þ¡¢µÚÈý´Îµþ´úºó£¬Õâ¸ö±íÏîÒ²±»´íÎóµØÓ¦Óõ½MOV/ADDÖ¸Áî¶Ô£¬Ö±µ½ËüµÄ״̬¼õΪ1»ò0¡£ ÕâÖÖÇé¿öÊÇÔÚµÚ¶þ´Îµþ´úµÄʱºòûÓгͷ££¬ÒòΪJNZ
L1µÄÔ¤²âʧ°Üµ¼ÖÂÁËˢУ¬×èÖ¹ÁË´íÎóÄ¿±êµÄ¼ÓÔØ¡£ µ«ÔÚµÚÈý´Îµþ´úµÄʱºòÓгͷ£¡£ ºóÐøµÄµþ´úûÓгͷ££¬µ«ÒòΪÉÏÊöÇé¿öµÄ´æÔÚ£¬JNZ
L1Ò»Ö±Ô¤²âʧ°Ü£¬Ë¢Ð»á×èÖ¹Pµ÷ÓüÓÔØËüµÄÄ¿±êµØÖ·¡£ Ö±µ½Pµ÷ÓõÄBTB±íÏîÒòΪ¼¸´Î´íÎóµÄÓ¦Óöø±»·Ï³ý¡£
ÎÒÃÇ¿ÉÒÔͨ¹ý²åÈëһЩNOP£¬·Ö¿ªËùÓÐÁ¬ÐøµÄ×ªÒÆÀ´¸Ä½ø´úÂë:
¡¡¡¡¡¡¡¡CALL P
¡¡¡¡¡¡¡¡TEST EAX£¬EAX
¡¡¡¡¡¡¡¡NOP
¡¡¡¡¡¡¡¡JZ L2
L1: ¡¡¡¡MOV [EDI]£¬EBX
¡¡¡¡¡¡¡¡ADD
EDI£¬4
¡¡¡¡¡¡¡¡DEC EAX
¡¡¡¡¡¡¡¡JNZ L1
L2: ¡¡¡¡NOP
¡¡¡¡¡¡¡¡NOP
¡¡¡¡¡¡¡¡CALL P
ËäÈ»¶îÍâµÄNOP»¨·Ñ2¸öʱÖÓÖÜÆÚ£¬µ«½ÚÊ¡µÃ¸ü¶à¡£ ´ËÍ⣬JZ
L2Õâ»ØÒÆÈëÁËU¹ÜµÀ(ÒòΪCALL½øÈëV¹ÜµÀ)£¬ÕâÑùµ±Ô¤²âʧ°ÜµÄʱºò£¬´ú¼Û¾ÍÓÉ4¸öʱÖÓÖÜÆÚ¼õΪ3¸öʱÖÓÖÜÆÚ¡£ ֻʣµÄÎÊÌâ¾ÍÊÇP¹ý³ÌµÄ·µ»ØµØÖ·Ò»Ö±»áÔ¤²âʧ°Ü¡£
Òª½â¾öµÄ»°£¬Ö»ÓÐÓÃÄÚÁªºêÀ´´úÌæP¹ý³ÌµÄµ÷ÓÃ(Èç¹ûÄãµÄCPUÖ¸Áîcache×ã¹»´óµÄ»°)¡£
ͨ¹ýÕâ¸öÀý×Ó£¬Äã¶®µÃÁËÓ¦¸Ã×ÐϸµØÑ°ÕÒÁ¬ÐøµÄ×ªÒÆÖ¸ÁîÈ»ºó¿¼ÂÇÊÇ·ñ¿ÉÒÔͨ¹ý²åÈëһЩNOP½Úʡʱ¼ä¡£
ÁíÍ⣬Äã¿´µ½ÁËһЩ±ØÈ»Ô¤²âʧ°ÜµÄÇé¿ö£¬±ÈÈçÑ»·Í˳öµÄʱºò£¬µ±Ò»¸ö±»²»Í¬Î»Öõ÷ÓõĹý³Ì·µ»ØµÄʱºò¡£
µ±È»£¬Èç¹ûÄãÓÐһЩÓÐÓõĴúÂë¿ÉÒÔ²åÈ룬ÄÇôӦ¸ÃÑ¡ÔñÓÐÓõĴúÂë¶ø²»ÊÇNOP¡£
¶à·ÖÖ§(case: ״̬)¼È¿ÉÒÔÓÃÊ÷Ð͵ĴóÁ¿×ªÒÆÖ¸ÁîʵÏÖ£¬Ò²¿ÉÒÔÓÃÌø×ª±íʵÏÖ¡£
Èç¹ûÄãÑ¡ÔñÁËÊ÷Ð͵Ä×ªÒÆÖ¸ÁÄÇôÄã±ØÐëÓÃһЩNOP»òÆäËüÖ¸Áî¸ô¿ªÁ¬ÐøµÄ×ªÒÆÖ¸Áî¡£Òò´ËÔÚPPlainÉÏ£¬Ìø×ª±í¿ÉÄÜÊÇÒ»¸ö¸üºÃµÄ½â¾ö·½°¸¡£
Ìø×ªµØÖ·±íÓ¦¸Ã·ÅÔÚÊý¾Ý¶Î£¬¾ö²»ÄÜ·ÅÔÚ´úÂë¶Î!
22.1.4 Сѻ·(PPlain)
ÔÚСѻ·ÖУ¬Äã¾³£ÒԺ̵ܶÄʱ¼ä¼ä¸ôÖØ¸´·ÃÎÊͬһ¸öBTB±íÏî¡£ Õâ²»»áÒýÆðÑÓ³Ù¡£
ÒòΪPPlain²»ÖªÔõô´ÓÁ÷Ë®ÏßÉÏ¿ªÁËÒ»¸ö"ºóÃÅ": ËüÄÜÔÚд»ØBTB֮ǰµÃµ½×î½üÒ»´ÎÌø×ªµÄ״ֵ̬£¬¶ø²»ÊǵȴýBTB±íÏîµÄ¸üС£
¸Ã»úÖÆ¶ÔÓû§¼¸ºõÊÇ͸Ã÷µÄ£¬µ«ÓÐʱËü»á²úÉúÓÐȤµÄЧ¹û: Èç¹û״̬0À´²»¼°Ð´»ØBTB£¬Äã»á¿´µ½·ÖÖ§Ô¤²âµÄ״̬×ÜÊÇ´Ó0µ½1£¬¶ø²»ÊÇ3¡£
ÕâÔÚÒ»¸öÑ»·Ð¡ÓÚ4¸öÖ¸Áî¶Ôʱ·¢Éú¡£
ÔÚÖ»ÓÐÁ½¸öÖ¸Áî¶ÔµÄÑ»·ÖУ¬Äã¿ÉÄÜ»áÔÚÁ¬ÐøÁ½´Îµþ´úÖУ¬Ê¹Óò»ÊÇÀ´×ÔBTBµÄ״̬0£»ÔÚÈç´ËСµÄÑ»·ÖУ¬ÉõÖÁ»áżȻµØÓÃÁ½´ÎÒÔǰµþ´úµÄ״ֵ̬£¬¶ø²»ÓÃ×î½üµÄÒ»´ÎÀ´Ô¤²â¡£
Ò»°ãÀ´Ëµ£¬ÕâЩÓÐȤµÄЧ¹ûÔÚÖ´ÐÐʱ²»»á´øÀ´Ê²Ã´¸±×÷Óá£
22.2
PMMX£¬ PPro£¬ PII and PIIIµÄ·ÖÖ§Ô¤²â
22.2.1 BTBµÄ×éÖ¯(PMMX£¬PPro£¬PIIºÍPIII)
PMMXµÄ·ÖÖ§Ä¿±ê»º´æ(BTB)ÓÐ256¸ö±íÏ×éÖ¯³É16·*16×é¡£
ÿ¸ö±íÏîÓÃÊôÓÚËüµÄ×ªÒÆÖ¸ÁîµÄ×îºóÒ»¸ö×ֽڵĵØÖ·µÄ2-31λ×÷ΪID¡£ 2-5λ×÷Ϊ×éÖµ£¬6-31λ´æÈëBTBÖÐ×÷Ϊ±ê¼Ç¡£
Á½ÌõµØÖ·Ïà¸ô64×Ö½ÚµÄ×ªÒÆÖ¸ÁÓÐÏàͬµÄ×éÖµ£¬¿ÉÄܻᱻÌß³öBTB±í¡£ µ«ÒòΪÿ×éÓÐ16·£¬Òò´Ë²»»á¾³£·¢ÉúÕâÖÖÊÂÇé¡£
PPro£¬PIIºÍPIIIµÄ·ÖÖ§Ä¿±ê»º´æ(BTB)ÓÐ512¸ö±íÏ×éÖ¯³É16·*32×é¡£
ÿ¸ö±íÏîÓÃÊôÓÚËüµÄ×ªÒÆÖ¸ÁîµÄ×îºóÒ»¸ö×ֽڵĵØÖ·µÄ4-31λ×÷ΪID¡£ 4-8λ×÷Ϊ×éÖµ£¬²¢ÇÒËùÓеÄ4-31λ¶¼´æÈëBTB×÷Ϊ±ê¼Ç¡£
Á½ÌõµØÖ·Ïà¸ô512×Ö½ÚµÄ×ªÒÆÖ¸ÁÓÐÏàͬµÄ×éÖµ£¬¿ÉÄܻᱻÌß³öBTB±í¡£ µ«ÒòΪÿ×éÓÐ16·£¬Òò´Ë²»»á¾³£·¢ÉúÕâÖÖÊÂÇé¡£
¶ÔÓÚÈκοØÖÆ×ªÒÆÖ¸ÁPPro£¬PIIºÍPIIIÔÚËüµÚÒ»´ÎÖ´ÐеÄʱºò¾Í»á·ÖÅäBTB±íÏî¡£
¶øÔÚPMMXÉÏ£¬ÊÇÔÚ×ªÒÆÖ¸ÁîµÚÒ»´Î·¢ÉúµÄʱºò·ÖÅä±íÏû·¢Éú¹ýµÄ·ÖÖ§Ö¸Áî²»½øÈëBTB±í£¬Ò»µ©Ëü·¢ÉúÒÔºó£¬ÄÄÅÂËüÒÔºóÒ»Ö±ÊDz»·¢Éú£¬ËüҲפÁôÔÚBTB±íÖС£
ÔÚÁíÒ»ÌõÓµÓÐÏàͬ×éÖµµÄ×ªÒÆÖ¸ÁîÐèÒªÒ»¸öBTB±íÏîµÄʱºò£¬ÔÀ´µÄ±íÏî±»Ìß³öBTB¡£
22.2.2
Ô¤²âʧ°ÜµÄ³Í·£(PMMX£¬PPro£¬PIIºÍPIII)
ÔÚPMMXÉÏ£¬U¹ÜµÀÉÏÖ´ÐеÄÌõ¼þjumpÖ¸Áî(JXX)Ô¤²âʧ°ÜµÄ´ú¼ÛÊÇ4¸öÖÜÆÚ£¬ÔÚV¹ÜµÀÉÏÊÇ5¸öÖÜÆÚ¡£
ÆäËüµÄ×ªÒÆÖ¸Áî¶¼ÊÇ4¸öÖÜÆÚµÄ³Í·£¡£
ÔÚPPro£¬PIIºÍPIIIÉÏ£¬ÒòΪ¹ÜµÀ±È½Ï³¤£¬Ô¤²âʧ°ÜµÄ´ú¼ÛºÜ´ó£¬Ò»°ãÐèÒª10-20¸öʱÖÓÖÜÆÚ¡£
Òò´ËÔÚPPro£¬PIIºÍPIIIÉϵijÌÐòÒª¸ñÍâÁôÒâÄÇЩ²»´óºÃÔ¤²âµÄ·ÖÖ§¡£
22.2.3
Ìõ¼þÌø×ªµÄģʽʶ±ð(PMMX£¬PPro£¬PIIºÍPIII)
ÕâЩ´¦ÀíÆ÷ÓÐÏȽøµÄģʽʶ±ð»úÖÆ£¬Äܹ»ÕýÈ·Ô¤²âÓйæÂɵķÖÖ§Ö¸Á±ÈÈçÿËĴεþ´úÀ´Ò»´Î·¢Éú£¬ÆäËüÈý´ÎÊDz»·¢Éú¡£
ÊÂʵÉÏ£¬ËüÃÇÄܹ»Ô¤²âËùÓг¤¶È²»³¬¹ý5µÄģʽµÄ·¢ÉúºÍ²»·¢Éú£¬ºÍÐí¶à¸ü³¤µÄģʽ¡£
¸Ã»úÖÆºÅ³Æ"Á½¼¶×ÔÊÊÓ¦·ÖÖ§Ô¤²âģʽ"£¬ÓÉ T.-Y.Yeh ºÍ Y.N.Patt ·¢Ã÷¡£
ËüÒÔÇ°ÃæÃèÊöµÄPPlainÉϵÄ2λ¼ÆÊýÆ÷ģʽΪ»ù´¡(µ«Ã»ÓÐ2λ¼ÆÊýÆ÷ÄÇÑù²»¶Ô³ÆµÄȱÏÝ)¡£
2 λ¼ÆÊýÆ÷ÊÇÔÚÌø×ª·¢Éúʱ״ֵ̬Ôö¼Ó£¬ÔÚ²»·¢Éúʱ¼õÉÙ£»ÔÚµ½´ï3»ò0ʱ±¥ºÍ£»·ÖÖ§Ö¸ÁîÔÚÏàÓ¦µÄ¼ÆÊýÆ÷ÖµÊÇ2»ò3ʱ±»Ô¤²âΪ·¢Éú£¬0ºÍ1ʱԤ²âΪ²»·¢Éú¡£ÏÖÔÚͨ¹ýÔÚÿһ¸öBTB±íÏîÖÐÓÐ16¸öÕâÑùµÄ¼ÆÊýÆ÷»ñµÃÁË´ó´óµÄ¸Ä½ø¡£
²Î¿¼·ÖÖ§Ö¸Áî×î½ü4´ÎµÄÖ´ÐÐÀúÊ·£¬´Ó16¸ö¼ÆÊýÆ÷ÖÐÑ¡³ö1¸ö¡£ ±ÈÈ磬·ÖÖ§Ö¸Áî·¢ÉúÒ»´ÎÈ»ºó²»·¢ÉúÈý´Î£¬Äã»áµÃµ½Àúʷλ´®1000(1=·¢Éú£¬0=²»·¢Éú)¡£
Õâ¾ÍʹµÃCPUÏÂÒ»´ÎÔ¤²âÓüÆÊýÆ÷8(1000b=8)£¬²¢ÇÒÒÔºó¸üмÆÊýÆ÷8¡£
Èç¹û1000ÐòÁÐ×ÜÊÇ·¢Éú£¬¼ÆÊýÆ÷8½«ºÜ¿ìµ½´ïËü×î´ó״ֵ̬3£¬ÕâÑùËü½«Ò»Ö±Ô¤²â1000ÐòÁС£
ÒªÁ½´Î±³ÀëÕâ¸öģʽ²Å»á¸Ä±äÔ¤²â½á¹û¡£ ÖØ¸´Ä£Ê½100010001000ʹµÃ¼ÆÊýÆ÷8µÄ״ֵ̬ÊÇ3£¬¼ÆÊýÆ÷1£¬2£¬4µÄ״ֵ̬Ϊ0¡£
ÁíÍâ12¸ö¼ÆÊýÆ÷²»Óá£
22.2.4
¿ÉÍêÃÀÔ¤²âµÄģʽ(PMMX£¬PPro£¬PIIºÍPIII)
Èç¹ûij¸ö³¤¶È´óÓÚ5µÄģʽ´®ÖÐÈκÎÒ»¸ö4λµÄ×Ó´®¶¼ÊÇΨһµÄ£¬ÄÇôÕâ¸öģʽ´®Äܱ»ÍêÃÀµØÔ¤²â¡£ ÏÂÃæÁгöÁËÄܱ»ÍêÃÀÔ¤²âµÄģʽ´®:
| ³¤¶È |
¿ÉÍêÃÀÔ¤²âµÄģʽ |
| 1-5 | all |
| 6 | 000011, 000101, 000111, 001011 |
| 7 | 0000101, 0000111, 0001011 |
| 8 | 00001011, 00001111, 00010011, 00010111, 00101101 |
| 9 | 000010011, 000010111, 000100111, 000101101 |
| 10 | 0000100111, 0000101101, 0000101111, 0000110111, 0001010011, 0001011101 |
| 11 | 00001001111, 00001010011, 00001011101, 00010100111 |
| 12 | 000010100111, 000010111101, 000011010111, 000100110111, 000100111011 |
| 13 | 0000100110111, 0000100111011, 0000101001111 |
| 14 | 00001001101111, 00001001111011, 00010011010111, 00010011101011, 00010110011101, 00010110100111 |
| 15 | 000010011010111, 000010011101011, 000010100110111, 000010100111011, 000010110011101, 000010110100111, 000010111010011, 000011010010111 |
| 16 | 0000100110101111, 0000100111101011, 0000101100111101, 0000101101001111 |
¿´ÁËÕâ¸ö±í£¬ÄãÓ¦¸ÃÒâʶµ½Èç¹ûÒ»¸öģʽ´®Äܱ»ÕýÈ·µØÔ¤²â£¬ÄÇôËüµÄ»ØÎÄ´®(·´¹ýÀ´¶Á)ºÍ²¹´®Ò²Äܱ»ÕýÈ·Ô¤²â¡£
±ÈÈ磬ÎÒÃÇ·¢ÏÖÁËģʽ0001011£¬Æä»ØÎÄ´®ÊÇ: 1101000£¬²¹´®ÊÇ1110100£¬²¹´®µÄ»ØÎÄ´®ÊÇ0010111¡£ ÕâËĸö´®¶¼¿ÉÔ¤²â¡£
Сѻ·×óÒÆÒ»Î»µÃµ½:0010110£¬Õâ²»ÊÇÒ»¸öеÄģʽ£¬½ö½öÊÇͬһ¸öģʽµÄСѻ·ÒÆÎ»°æ¡£ ËùÓÐÓÉÉϱíÖеÄģʽ¾¹ý»ØÎÄ£¬È¡²¹£¬Ð¡Ñ»·ÒÆÎ»µÃµ½µÄģʽ¶¼ÄÜʶ±ð¡£
ÖÁÓÚÃ÷È·µÄÀíÓÉÕâÀïûÓиø³ö¡£
ÔÚBTB±íÏî·ÖÅäÖ®ºó£¬Ä£Ê½Ê¶±ð»úÖÆÑ§Ï°Ò»¸ö¹æÂÉ»¯µÄģʽÐèÒªÁ½¸ö½×¶Î¡£ ѧϰ¹ý³ÌÖÐÔ¤²âʧ°ÜµÄģʽ²»¿ÉÔÙÉú¡£
Õâ¿ÉÄÜÊÇÒòΪBTB±íÏî°üÀ¨ÁËһЩ·ÖÅä֮ǰµÄ¶«Î÷¡£¼ÈÈ»BTB±íÏîÊÇËæ»ú·ÖÅäµÄ£¬ÔÚ³õʼ»¯Ñ§Ï°¹ý³ÌÖкÜÉÙÓлú»áÈ¥Ô¤²â¡£
22.2.5
´¦Àí±³Àë¹æÂÉģʽµÄÇé¿ö(PMMX£¬PPro£¬PIIºÍPIII)
·ÖÖ§Ô¤²â»úÖÆ»¹Äܹ»ÍêÉÆµØ´¦Àí"¼¸ºõÓйæÂÉ"µÄģʽ£¬ºÍ±³Àë¹æÂÉģʽµÄÇé¿ö¡£Ëü²»½öѧϰ¹æÂÉ»¯µÄģʽµÄÑù×Ó£¬»¹Ñ§Ï°¹æÂÉ»¯µÄģʽ·¢Éú±³ÀëµÄÇé¿ö¡£Èç¹û±³ÀëÒ²ÓÐÏàͬµÄģʽ£¬Ëü»á¼Çס±³ÀëµÄģʽ£¬ÕâÑù±³ÀëµÄÔ¤²âʧ°ÜÖ»·¢ÉúÒ»´Î¡£
±ÈÈç:
0001110001110001110001011100011100011100010111000
^ ^Õâ¸öÐòÁÐÖУ¬0Òâζ×Ų»·¢Éú£¬1Òâζ×Å·¢Éú¡£
»úÆ÷ѧϰµ½Öظ´Ä£Ê½ÊÇ000111¡£ µÚÒ»´Î±³ÀëÊÇÒ»¸ö0£¬ÓÃ^±ê³ö¡£
ÔÚÕâ¸ö0ÒÔºóµÄÈý´ÎÌø×ª¿ÉÄÜÔ¤²â²»µ½ÁË£¬ÒòΪËü»¹Ã»Ñ§Ï°µ½0010£¬0101£¬1011ºó»á·¢Éúʲô¡£
ÔÚͬÑùµÄÒâÍâ·¢Éú1´Î»ò2´Îºó£¬Ëüѧϰµ½0010ºóÊǸö1£¬0101ºóÊǸö1£¬1011ºóÊǸö1¡£
ÕâÒâζ×ÅÏàͬÀàÐ͵ÄÒâÍâ×î¶à·¢ÉúÁ½´Î£¬¾¹ýÒ»´ÎÔ¤²âʧ°Ü£¬Ëü¾Íѧ»á´¦ÀíÕâÀàÒâÍâ¡£
¶ÔÓÚÁ½¸ö²»Í¬µÄ¹æÂÉ»¯Ä£Ê½µÄÇл»£¬¸Ã»úÖÆÒ²ºÜÓÐЧ¡£
±ÈÈ磬ÎÒÃÇÒÑ¾ÖØ¸´ÁË000111ģʽ(³¤¶ÈΪ6)ºÜ¶à´Î£¬È»ºóÖØ¸´01ģʽ(³¤¶ÈΪ2)ºÜ¶à´Î£¬È»ºóÓֻص½000111ģʽµÄʱºò£¬Ëü²»ÐèÒªÔÙѧϰ000111ģʽ£¬ÒòΪ000111ÐòÁÐËùÓõļÆÊýÆ÷ÔÚ01ÆÚ¼äûÓб»¸Ä¹ý¡£
ÔÚÁ½¸öģʽ֮¼ä½»ÌæµÄ¼¸´Îºó£¬Ëü»¹»á¶®µÃ´¦ÀíģʽµÄ±ä»»£¬¶ÔÓÚÿ´ÎģʽÇл»£¬´ú¼ÛÖ»ÓÐÒ»´ÎÔ¤²âʧ°Ü¡£
22.2.6 ²»ÄÜÍêÃÀÔ¤²âµÄģʽ(PMMX£¬PPro£¬PIIºÍPIII)
×î¼òµ¥µÄ²»Äܱ»ÍêÃÀÔ¤²âµÄģʽÊÇÿÁù´ÎÓÐÒ»´Î·¢Éú¡£¸ÃģʽÊÇ:
000001000001000001
^^ ^^ ^^
ab ab ab0000ÐòÁÐ×ÜÊǸúÔÚÒ»¸ö0(ÓÃa±ê³ö)ºÍÒ»¸ö1(ÓÃb±ê³ö)ºóÃæ¡£ ÕâʹµÃ¼ÆÊýÆ÷0Ò»Ö±ÔÚÉÏÉÏÏÂÏ¡£
Èç¹û¼ÆÊýÆ÷0´Ó״̬0»ò1¿ªÊ¼£¬ÄÇôËü»áÒ»Ö±ÔÚ0ºÍ1Ö®¼ä½»Ì棬bλÖý«Ò»Ö±·¢ÉúÔ¤²âʧ°Ü£»Èç¹û¼ÆÊýÆ÷0´Ó״̬3¿ªÊ¼£¬ÄÇôËü»áÒ»Ö±ÔÚ2ºÍ3Ö®¼ä½»Ì棬aλÖý«Ò»Ö±·¢ÉúÔ¤²âʧ°Ü¡£
×µÄÇé¿öÊÇËü´Ó״̬2¿ªÊ¼£¬Ëü»á²»ÐÒÔÚ1ºÍ2Ö®¼ä½»Ì棬ÎÒÃÇÔÚaºÍb´¦¶¼»áÔ¤²âʧ°Ü(ÕâÓеãÏñÇ°ÃæËµµÄPPlainµÄ×Çé¿ö)¡£
ÎÒÃÇ»á´ÓÄĸö״̬¿ªÊ¼È¡¾öÓÚ¸Ã×ªÒÆÖ¸ÁîµÄBTB±íÏî·ÖÅä֮ǰµÄÀúÊ·¡£ ÒòÎªËæ»ú·ÖÅ䣬ËùÒÔÎÒÃÇÎÞ·¨¿ØÖÆ¡£
ΪÁ˱ÜÃâÿ´ÎÑ»·ÓÐÁ½¸öÔ¤²âʧ°ÜµÄ×Çé¿ö£¬ÀíÂÛÉÏÎÒÃÇ¿ÉÒÔ¸øCPUÒ»¸öרÃÅÉè¼ÆµÄ·ÖÖ§ÐòÁУ¬Ê¹ËüµÄ¼ÆÊýÆ÷ֵΪÀíÏëµÄ״̬£¬È»¶ø£¬²»ÍƼöÕâ¸ö°ì·¨£¬ÒòΪ¿¼Âǵ½¶îÍâ´úÂëµÄ¿ªÏú£¬¶øÇÒ²»¹ÜÎÒÃÇÔÚ¼ÆÊýÆ÷ÖзÅÈëʲôÐÅÏ¢£¬ÔÚÒÔºóÓÐÖжϻòÈÎÎñÇл»µÄʱºòÈÔÈ»»á¶ªÊ§¡£
22.2.7¡¡ÍêÈ«Ëæ»úµÄģʽ(PMMX£¬PPro£¬PIIºÍPIII)
ÔÚÍêȫûÓйæÂɵÄÐòÁÐÏ£¬Ç¿´óµÄģʽʶ±ð»úÖÆÒ²ÓÐСµÄȱµã¡£
ÏÂÃæµÄ±í¸ñÁгöÁËÔÚÍêÈ«Ëæ»úµÄÌø×ª·¢Éú/²»·¢ÉúÐòÁÐϵÄÔ¤²âʧ°ÜÂÊ:
|
·¢Éú£¯²»·¢ÉúµÄ±ÈÀý |
Ô¤²âʧ°ÜµÄ±ÈÀý |
|
0.001/0.999 |
0.001001 |
|
0.01/0.99 |
0.0101 |
|
0.05/0.95 |
0.0525 |
|
0.10/0.90 |
0.110 |
|
0.15/0.85 |
0.171 |
|
0.20/0.80 |
0.235 |
|
0.25/0.75 |
0.300 |
|
0.30/0.70 |
0.362 |
|
0.35/0.65 |
0.418 |
|
0.40/0.60 |
0.462 |
|
0.45/0.55 |
0.490 |
|
0.50/0.50 |
0.500 |
Ô¤²âʧ°ÜÂʱÈûÓÐģʽʶ±ð»úÖÆÂԸߡ£ ÒòΪ´¦ÀíÆ÷ÔÚºÁÎÞ¹æÂɵÄÐòÁÐÀïÈÔÈ»ÔÚÊÔͼÕÒÖØ¸´µÄģʽ¡£
22.2.8
Сѻ·(PMMX)
ÔÚСѻ·Ï£¬PMMXµÄ·ÖÖ§Ô¤²âÊDz»¿É¿¿µÄ£¬ÒòΪģʽʶ±ð»úÖÆÔÚÓÖÒ»´ÎÅöµ½·ÖÖ§Ö¸Áî֮ǰÀ´²»¼°¸üÐÂËüµÄÊý¾Ý¡£
ÕâÒâζ×Åͨ³£Äܹ»ÍêÃÀÔ¤²âµÄ¼òµ¥Ä£Ê½Ò²²»ÄÜÔ¤²âÁË¡£È»¶ø£¬Õý³£Çé¿öϲ»ÄÜʶ±ðµÄģʽ£¬ÄÜÔÚСѻ·ÏÂÍêÃÀµØÔ¤²â¡£
±ÈÈ磬һ¸ö×ÜÊÇÑ»·6´Î£¬µ×²¿ÓÐÒ»¸ö·ÖÖ§Ö¸ÁîµÄÑ»·½«ÓÐ111110µÄģʽ¡£ Õâ¸öģʽÔÚÕý³£Çé¿öÏÂ×ܵÃÓÐ1µ½2´ÎÔ¤²âʧ°Ü£¬µ«ÔÚСѻ·Àï²»»áÓÐÔ¤²âʧ°Ü¡£
¶ÔÓÚ×ÜÊÇÑ»·7´ÎµÄСѻ·Ò²ÊÇÈç´Ë¡£ ´ó¶àÊýÆäËüÑ»·´ÎÊýµÄÑ»·×÷ΪСѻ·¶¼±ÈÕý³£Çé¿öÏÂÔ¤²âµÃ²î¡£ ÕâÒâζ×ŵþ´ú6»ò7´ÎµÄÑ»·¸üÊʺÏ×ö³ÉСѻ·£¬ÆäËüÇé¿öϲ»Êʺϡ£
Èç¹ûÐèÒª°ÑÑ»·×ö´ó£¬Äã¿ÉÒÔ½«ËüÕ¹¿ª¡£
ÅжÏÔÚPMMXÉϵÄÒ»¸öÑ»·ÊÇ·ñÊÇСѻ·£¬Äã¿ÉÒÔ×ñÑÄ´Ö¸·¨Ôò:¸øÑ»·ÖеÄÖ¸Áî¼ÆÊý¡£ Èç¹ûСÓÚµÈÓÚ6£¬¸ÃÑ»·ÊÇСѻ·¡£
Èç¹ûÓжàÓÚ7ÌõÖ¸ÁÄã¾ÍÄܱ£Ö¤Ä£Ê½Ê¶±ðµÄ¹¦ÄÜÕý³£ÁË¡£ Ïàµ±Ææ¹ÖµÄÊÇ£¬¸÷ÌõÖ¸ÁîÓöàÉÙʱÖÓÖÜÆÚ£¬ÓÐûÓÐÑÓ³Ù£¬ÊÇ·ñÅä¶Ô¶¼ÎÞËùν¡£
¸´ÔÓµÄÕûÐÎÖ¸Áî²»¼ÆÔÚÄÚ(¸´ÔÓµÄÕûÐÎÖ¸ÁîÊÇÖ¸²»ÄÜÅä¶ÔµÄ(NP)ÕûÐÎÖ¸Áͨ³£ÐèÒª¶àÓàÒ»¸öÖÜÆÚÀ´Ö´ÐÐ)£¬Ò»¸ö¿ÉÒÔÓÐÐí¶à¸´ÔÓµÄÕûÐÎÖ¸Áî¶øÔÚÐÐΪÉÏÈÔÊÇÒ»¸öСѻ·¡£
¸´Ôӵĸ¡µãÖ¸ÁîºÍMMXÖ¸ÁîÒ²¼ÆÎª1ÌõÖ¸Áî¡£ ×¢Ò⣬¸Ã·¨ÔòÖ»ÊÇÆô·¢ÐԵ쬲¢·ÇÍêÈ«¿É¿¿¡£ ÖØÒªµÄÊÇʵÑé²âÊÔ¡£
ÔÚPMMXÉÏ£¬Äã¿ÉÒÔÓÃÐÔÄÜ¼à¿ØÆ÷35HΪ·ÖÖ§Ô¤²âµÄʧ°Ü¼ÆÊý¡£ ²âÊÔ½á¹ûÒ²ÊDz»È·¶¨µÄ£¬ÒòΪ·ÖÖ§Ô¤²âµÄ½á¹ûÈ¡¾öÓÚBTB±íÏî·ÖÅä֮ǰµÄÀúÊ·¼Ç¼¡£
ÔÚPPro£¬PIIºÍPIIIÉÏСѻ·µÄÔ¤²âÊÇÕý³£µÄ£¬ÒòΪÿ´Îµþ´úÖÁÉÙÒª»¨È¥2¸öʱÖÓÖÜÆÚÓÃÓÚ¸üÐÂÊý¾Ý¡£
22.2.9 ¼ä½ÓÌø×ªºÍµ÷ÓÃ(PMMX£¬PPro£¬PIIºÍPIII)
¼ä½ÓÌø×ªºÍµ÷ÓÃûÓÐģʽʶ±ð»úÖÆ£¬¶ÔÓÚÒ»¸ö¼ä½ÓÌø×ª£¬BTB Ö»ÄܼÇסһ¸öÄ¿±ê¡£ËüÖ»ÊǼòµ¥µØÔ¤²âµ½´ïÓëÉÏÒ»´ÎÏàͬµÄÄ¿±ê¡£
22.2.10
¡¡JECXZºÍLOOP(PMMX)
ÔÚPMMXÉÏ£¬ÕâÁ½¸öÖ¸ÁîûÓÐģʽʶ±ð¡£ ËüÃDZ»¼òµ¥µØÔ¤²âÓë×î½üÒ»´ÎÖ´ÐеÄÄ¿±êÏàͬ¡£ Òò´ËPMMXÉÏ£¬¶ÔÔËÐÐʱ¼ä¿Á¿ÌµÄ´úÂëÒª±ÜÃâÕâÁ½ÌõÖ¸Áî(ÔÚPPro£¬PIIºÍPIIIÉ϶ÔËüÃÇÓÐģʽʶ±ð»úÖÆ£¬µ«ÊÇloopÖ¸ÁîµÄЧÂÊÈÔÈ»µÍÓÚDEC ECX/JNZ)¡£
22.2.11
·µ»Ø(PMMX£¬PPro£¬PIIºÍPIII)
PMMX£¬PPro£¬PIIºÍPIIIÉÏÓÐÒ»¸ö·µ»ØÕ»»º´æ(RSB)ÓÃÓÚÔ¤²â·µ»ØÖ¸Áî¡£ RSB¹¤×÷ʱÊÇÏȽøºó³ö¡£
ÿµ±CALLÖ¸Áî±»Ö´ÐÐʱ£¬ÏàÓ¦µÄ·µ»ØµØÖ·±»Ñ¹ÈëRSB¡£ ÿ´Î·µ»ØÖ¸ÁîÖ´ÐÐʱ£¬Ò»¸ö·µ»ØµØÖ·µ¯³öRSBÓÃÓÚÔ¤²â·µ»ØµØÖ·¡£
¸Ã»úÖÆ±£Ö¤ÁËͬһ¸ö×Ó³ÌÐò£¬ÄÄÅÂÔÚ²»Í¬µÄµØ·½±»µ÷Óã¬Æä·µ»ØÖ¸ÁîÒ²Äܱ»ÕýÈ·µØÔ¤²â¡£
ΪÁ˱£Ö¤¸Ã»úÖÆµÄÕý³£¹¤×÷£¬Äã±ØÐë±£Ö¤ËùÓеÄCALLºÍ·µ»ØÖ¸ÁîÆ¥Åä¡£
²»ÒªÃ»Óзµ»Ø±ã´ÓÒ»¸ö×Ó¹ý³ÌÌø³ö£¬Èç¹ûËÙ¶ÈÒªÇó¿Á¿ÌµÄ»°£¬²»Òª½«·µ»ØÖ¸Áîµ±×÷¼ä½ÓÌø×ªÖ¸ÁîʹÓá£
ÔÚPMMXÉÏ£¬RSB¿ÉÓÐËĸö±íÏÔÚPPro£¬PIIºÍPIIIÉÏ¿ÉÓÐ16¸ö¡£
ÔÚRSB¿ÕµÄÇé¿öÏ£¬·µ»ØÖ¸ÁîµÄÔ¤²âÓë¼ä½ÓÌø×ªÖ¸ÁîÏàͬ£¬¼´Ëü±»Ô¤²âΪµ½´ïÓëÉÏÒ