|
¡¡ |
| Categories nsearchssearch; |
|
|
Ŀ¼£º ¡¡¡¡ÄÚÁª»ã±àµÄÓÅȱµã ¡¡¡¡ÄÚÁª»ã±à¹Ø¼ü×Ö ¡¡¡¡ÔÚ__asm¿éÖÐʹÓûã±àÓïÑÔ ¡¡¡¡ÔÚ__asm¿éÖÐʹÓÃC/C++ÓïÑÔÔªËØ ¡¡¡¡¼Ä´æÆ÷ʹÓà ¡¡¡¡×ªÌø ¡¡¡¡µ÷Óú¯Êý ¡¡¡¡Ò»¸öÀý×Ó ¡¡¡¡ºó»° ÎĵµÄÚÈÝ£º Ò»¡¢ÄÚÁª»ã±àµÄÓÅȱµã ÒòΪÔÚVisual C++ÖÐʹÓÃÄÚÁª»ã±à²»ÐèÒª¶îÍâµÄ±àÒëÆ÷ºÍÁª½ÓÆ÷£¬ÇÒ¿ÉÒÔ´¦ÀíVisual C++Öв»ÄÜ´¦ÀíµÄһЩÊÂÇ飬¶øÇÒ¿ÉÒÔʹÓÃÔÚC/C++ÖеıäÁ¿£¬ËùÒԷdz£·½±ã¡£ÄÚÁª»ã±àÖ÷ÒªÓÃÓÚÈçϳ¡ºÏ: 1.ʹÓûã±àÓïÑÔдº¯Êý£» 2.¶ÔËÙ¶ÈÒªÇó·Ç³£¸ßµÄ´úÂ룻 3.É豸Çý¶¯³ÌÐòÖÐÖ±½Ó·ÃÎÊÓ²¼þ£» 4."Naked" CallµÄ³õʼ»¯ºÍ½áÊø´úÂë¡£ //(."Naked"£¬Àí½âÁËÒâ˼£¬µ«ÊDz»ÖªµÀÔõô·Òë^_^£¬´ó¸Å¾ÍÊDz»ÐèÒªC/C++µÄ±àÒëÆ÷(×Ô×÷´ÏÃ÷)Éú³ÉµÄº¯Êý³õʼ»¯ºÍÊÕβ´úÂ룬Çë²Î¿´MSDNµÄ"Naked Functions"µÄ˵Ã÷) ÄÚÁª»ã±à´úÂë²»Ò×ÓÚÒÆÖ²£¬Èç¹ûÄãµÄ³ÌÐò´òËãÔÚ²»Í¬ÀàÐ͵ĻúÆ÷£¨±ÈÈçx86ºÍAlpha£©ÉÏÔËÐУ¬Ó¦µ±¾¡Á¿±ÜÃâʹÓÃÄÚÁª»ã±à¡£ÕâʱºòÄã¿ÉÒÔʹÓÃMASM£¬ÒòΪMASMÖ§³Ö¸ü·½±ãµÄµÄºêÖ¸ÁîºÍÊý¾Ýָʾ·û¡£ ¶þ¡¢ÄÚÁª»ã±à¹Ø¼ü×Ö ÔÚVisual C++ʹÓÃÄÚÁª»ã±àÓõ½µÄÊÇ__asm¹Ø¼ü×Ö£¬Õâ¸ö¹Ø¼ü×ÖÓÐÁ½ÖÖʹÓ÷½·¨: 1.¼òµ¥__asm¿é __asm {} 2.ÔÚÿÌõ»ã±àÖ¸Áî֮ǰ¼Ó__asm¹Ø¼ü×Ö __asm MOV AL, 2 __asm MOV DX, 0xD007 __asm OUT AL, DX ÒòΪ__asm¹Ø¼ü×ÖÊÇÓï¾ä·Ö¸ô·û£¬Òò´ËÄã¿ÉÒÔ°Ñ»ã±àÖ¸Áî·ÅÔÚͬһÐÐ: __asm MOV AL, 2 __asm MOV DX, 0XD007 __asm OUT AL, DX ÏÔÈ»£¬µÚÒ»ÖÖ·½·¨ºÍC/C++µÄ·ç¸ñºÜÒ»Ö£¬²¢ÇÒÓкܶàÆäËüÓŵ㣬Òò´ËÍÆ¼öʹÓõÚÒ»ÖÖ·½·¨¡£ ²»ÏóÔÚC/C++ÖеÄ"{}"£¬__asm¿éµÄ"{}"²»»áÓ°ÏìC/C++±äÁ¿µÄ×÷Ó÷¶Î§¡£Í¬Ê±£¬__asm¿é¿ÉÒÔǶÌ×£¬Ç¶Ì×Ò²²»»áÓ°Ïì±äÁ¿µÄ×÷Ó÷¶Î§¡£ Èý¡¢ÔÚ__asm¿éÖÐʹÓûã±àÓïÑÔ 1.ÄÚÁª»ã±àÖ¸Á ÄÚÁª»ã±àÍêȫ֧³ÖµÄIntel 486Ö¸Á£¬ÔÊÐíʹÓÃMMXÖ¸Áî¡£²»Ö§³ÖµÄÖ¸Áî¿ÉÒÔʹÓÃ_EMITαָÁÒå(_EMITαָÁî˵Ã÷¼ûÏÂÎÄ)¡£ 2.MASM±í´ïʽ ÄÚÁª»ã±à¿ÉÒÔʹÓÃMASMÖеıí´ïʽ¡£±ÈÈç: MOV EAX, 1¡£ 3.Êý¾Ýָʾ·ûºÍ²Ù×÷·û ËäÈ»__asm¿éÖÐÔÊÐíʹÓÃC/C++µÄÊý¾ÝÀàÐͺͶÔÏ󣬵«Ëü²»ÄÜÓÃMASMָʾ·ûºÍ²Ù×÷·û¶¨ÒåÊý¾Ý¶ÔÏó¡£ÕâÀïÌØ±ðÖ¸³ö£¬__asm¿éÖв»ÔÊÐíMASMÖе͍Òåָʾ·û: DB¡¢DW¡¢DD¡¢DQ¡¢DTºÍDF£¬Ò²²»ÔÊÐíDUPºÍTHIS²Ù×÷·û¡£MASM½á¹¹ºÍ¼Ç¼Ҳ²»ÔÙÓÐЧ£¬ÄÚÁª»ã±à²»½ÓÊÜSTRUC¡¢RECORD¡¢WIDTH»òÕßMASK¡£ 4.EVENºÍALIGNָʾ·û ¾¡¹ÜÄÚÁª»ã±à²»Ö§³Ö´ó¶àÊýMASMָʾ·û£¬µ«ËüÖ§³ÖEVENºÍALIGN£¬µ±ÐèÒªµÄʱºò£¬ÕâЩָʾ·ûÔÚ»ã±à´úÂëÀïÃæ¼ÓÈëNOP(¿Õ²Ù×÷)Ö¸Áîʹ±êºÅ¶ÔÆëµ½Ìض¨±ß½ç¡£ÕâÑù¿ÉÒÔʹijЩ´¦ÀíÆ÷ȡָÁîʱ¾ßÓиü¸ßµÄЧÂÊ¡£ 5.MASMºêָʾ·û ÄÚÁª»ã±à²»ÊǺê»ã±à£¬²»ÄÜʹÓÃMASMºêָʾ·û(MACRO¡¢REPT¡¢IRC¡¢IRPºÍENDM)ºÍºê²Ù×÷·û(<>¡¢!¡¢&¡¢%ºÍ.TYPE)¡£ 6.¶Î˵Ã÷ ±ØÐëʹÓüĴæÆ÷À´ËµÃ÷¶Î£¬¿çÔ½¶Î±ØÐëÏÔʽµØËµÃ÷£¬ÈçES:[BX]¡£ 7.ÀàÐͺͱäÁ¿´óС ÎÒÃÇ¿ÉÒÔʹÓÃLENGTHÀ´È¡µÃC/C++ÖеÄÊý×éÖеÄÔªËØ¸öÊý£¬Èç¹û²»ÊÇÒ»¸öÊý×飬Ôò½á¹ûΪһ¡£Ê¹ÓÃSIZEÀ´È¡µÃC/C++ÖбäÁ¿µÄ´óС£¬Ò»¸ö±äÁ¿µÄ´óСÊÇLENGTHºÍTYPEµÄ³Ë»ý¡£TYPEÓÃÀ´È¡µÃÒ»¸ö±äÁ¿µÄ´óС£¬Èç¹ûÊÇÒ»¸öÊý×飬ËüµÃµ½µÄÒ»¸öÊý×éÖеĵ¥¸öÔªËØµÄ´óС¡£ 8.×¢ÊÍ ¿ÉÒÔʹÓÃC/C++µÄ×¢ÊÍ£¬µ«ÍƼöÓÃASMµÄ×¢ÊÍ£¬¼´";"ºÅ¡£ 9._EMITαָÁî _EMITαָÁîÏ൱ÓÚMASMÖеÄDB£¬µ«Ò»´ÎÖ»Äܶ¨ÒåÒ»¸ö×Ö½Ú£¬±ÈÈç: __asm {} ËÄ¡¢ÔÚ__asm¿éÖÐʹÓÃC/C++ÓïÑÔÔªËØ C/C++Óë»ã±à¿ÉÒÔ»ìºÏʹÓã¬ÔÚÄÚÁª»ã±à¿ÉÒÔʹÓÃC/C++µÄ±äÁ¿ºÍºÜ¶àÆäËüC/C++µÄÔªËØ¡£ÔÚ__asm¿éÖпÉÒÔʹÓÃÒÔÏÂC/C++ÔªËØ: 1.·ûºÅ£¬°üÀ¨±êºÅ¡¢±äÁ¿ºÍº¯ÊýÃû£» 2.³£Á¿£¬°üÀ¨·ûºÅ³£Á¿ºÍö¾ÙÐÍ(enum)³ÉÔ±£» 3.ºê¶¨ÒåºÍÔ¤´¦Àíָʾ·û£» 4.×¢ÊÍ£¬°üÀ¨"/**/"ºÍ"//"£» 5.ÀàÐÍÃû£¬°üÀ¨ËùÓÐMASMÖкϷ¨µÄÀàÐÍ 6.typedefÃû³Æ£¬ ÏñPTR¡¢TYPE¡¢Ìض¨µÄ½á¹¹³ÉÔ±»òö¾Ù³ÉÔ±ÕâÑùµÄͨÓòÙ×÷·û¡£ ÔÚ__asm¿éÖУ¬¿ÉÒÔʹÓÃC/C++»òASMµÄ»ùÊý¼ÆÊý·¨(±ÈÈç: 0x100ºÍ100HÊÇÏàµÈµÄ)¡£ __asm¿éÖв»ÄÜʹÓÃÏñ<<Ò»ÀàµÄC/C++²Ù×÷·û¡£C/C++ºÍMASMͨÓõIJÙ×÷·û£¬±ÈÈç"*"ºÍ"[]"²Ù×÷·û£¬¶¼±»ÈÏΪÊÇ»ã±àÓïÑԵIJÙ×÷·û¡£¾Ù¸öÀý×Ó: int array[10]; __asm MOV array[6], BX ; Store BX at array+6 (not scaled) array[6] = 0; /* Store 0 at array+12 (scaled) */ * С¼¼ÇÉ: ÄÚÁª»ã±àÖУ¬Äã¿ÉÒÔʹÓÃTYPE²Ù×÷·ûʹ×÷ÆäÓëCÒ»Ö¡£±ÈÈ磬ÏÂÃæÁ½ÌõÓï¾äÊÇÒ»ÑùµÄ: __asm MOV array[6 * TYPE int], 0 ; Store 0 at array + 12 array[6] = 0; /* Store 0 at array + 12 */ ÄÚÁª»ã±àÄÜͨ¹ý±äÁ½ÃûÖ±½ÓÒýÓÃC/C++µÄ±äÁ¿¡£__asm¿éÖпÉÒÔÒýÓÃÈκηûºÅ£¬°üÀ¨±äÁ¿Ãû¡£ Èç¹ûC/C++ÖеÄÀà¡¢½á¹¹»òÕßö¾Ù³ÉÔ±¾ßÓÐΨһµÄÃû³Æ£¬Èç¹ûÔÚ"."²Ù×÷·û֮ǰ²»Ö¸¶¨±äÁ¿»òÕßtypedefÃû³Æ£¬Ôò__asm¿éÖÐÖ»ÄÜÒýÓóÉÔ±Ãû³Æ¡£È»¶ø£¬Èç¹û³ÉÔ±²»ÊÇΨһµÄ£¬Äã±ØÐëÔÚ"."²Ù×÷·û֮ǰ¼ÓÉϱäÁ¿Ãû»òtypedefÃû³Æ¡£ÀýÈ磬ÏÂÃæµÄÁ½¸ö½á¹¹¶¼¾ßÓÐsame_nameÕâ¸ö³ÉÔ±±äÁ¿: struct first_type {}; struct second_type {}; Èç¹û°´ÏÂÃæÉùÃ÷±äÁ¿: struct first_type hal; struct second_type oat; ÄÇô£¬ËùÓÐÒýÓÃsame_name³ÉÔ±µÄµØ·½¶¼±ØÐëʹÓñäÁ¿Ãû£¬ÒòΪsame_name²»ÊÇΨһµÄ¡£ÁíÍ⣬ÉÏÃæµÄweasel±äÁ¿¾ßÓÐΨһµÄÃû³Æ£¬Äã¿ÉÒÔ½ö½öʹÓÃËüµÄ³ÉÔ±Ãû³ÆÀ´ÒýÓÃËü: __asm {} ×¢Ò⣬ʡÂÔÁ˱äÁ¿Ãû½ö½öÊÇΪÁËд´úÂëµÄ·½±ã£¬Éú³ÉµÄ»ã±àÖ¸ÁîµÄ»¹ÊÇÒ»ÑùµÄ¡£ ¿ÉÒÔ²»ÊÜÏÞÖÆµØ·ÃÎÊC++³ÉÔ±±äÁ¿£¬µ«ÊDz»Äܵ÷ÓÃC++µÄ³ÉÔ±º¯Êý¡£ Îå¡¢¼Ä´æÆ÷ʹÓà һ°ãÀ´Ëµ£¬ÔÚ__asm¿é¿ªÊ¼µÄʱºò£¬¼Ä´æÆ÷Êǿյ쬲»ÄÜÔÚÁ½¸ö__asmÖ®¼ä±£´æ¼Ä´æÆ÷µÄÖµ¡£(ÕâÊÇMSDNÉÏ˵µÄ£¬ÎÒÔÚʵ¼ÊʹÓÃʱ·¢ÏÖ£¬ºÃÏñ²¢²»ÊÇÕâÑù¡£²»¹ýËüÊÇ˵"Ò»°ã"£¬ÎÒÊÇÌØÊâ:)) Èç¹ûÒ»¸öº¯Êý±»ÉùÃ÷³ÉÁË__fastcall£¬ÔòÆä²ÎÊý½«·ÅÔڼĴæÆ÷ÖУ¬Õ⽫¸ø¼Ä´æÆ÷µÄ¹ÜÀí´øÀ´ÎÊÌâ¡£ËùÒÔ£¬Èç¹ûÒª½«Ò»¸öº¯ÊýÉùÃ÷³É__fastcall£¬±ØÐë±£´æECX¼Ä´æÆ÷¡£ÎªÁ˱ÜÃâÒÔÉϵijåÍ»£¬ÔÚÉùÃ÷Ϊ__fastcallµÄº¯ÊýÖв»ÒªÓÐ__asm¿é¡£Èç¹ûÓÃÁË/Gr±àÒëÑ¡Ïî(ËüÈ«¾ÖµÄ±ä³É__fastcall)£¬½«Ã¿¸öº¯ÊýÉùÃ÷³É__cdecl»òÕß__stdcall£¬Õâ¸öÊôÐÔ¸æËß±àÒëÆ÷Óô«Í³µÄC·½·¨¡£ Èç¹ûʹÓÃEAX¡¢EBX¡¢ECX¡¢EDX¡¢ESIºÍEDI¼Ä´æÆ÷£¬Äã²»ÐèÒª±£´æËü£»µ«Èç¹ûÄãÓõ½ÁËDS¡¢ SS¡¢SP¡¢BPºÍ±êÖ¾¼Ä´æÆ÷£¬ÄǾÍÓ¦¸ÃPUSH±£´æÕâЩ¼Ä´æÆ÷¡£ Èç¹û³ÌÐòÖиıäÁËÓÃÓÚSTDºÍCLDµÄ·½Ïò±êÖ¾£¬Äã±ØÐ뽫Æä»Ö¸´µ½ÔÀ´µÄÖµ¡£ Áù¡¢×ªÌø ¿ÉÒÔÔÚCÀïÃæÊ¹ÓÃgotoµ÷µ½__asm¿éÖеıêºÅ´¦£¬Ò²¿ÉÒÔÔÚ__asm¿éÖÐ×ªÌøµ½__asm¿éÀïÃæºÍÍâÃæµÄ±êºÅ´¦¡£__asm¿éÄڵıêºÅÊDz»Çø·Ö´óСдµÄ(Ö¸Áָʾ·ûµÈÒ²ÊDz»Çø·Ö´óСдµÄ)¡£Àý: void func() {} C_Dest: /* CµÄ±êºÅ */ return; } ²»ÒªÊ¹Óú¯ÊýÃû³Æµ±×÷±êºÅ£¬·ñÔò½«Ê¹ÆäÌøµ½º¯ÊýÖ´Ðжø²»ÊDZêºÅ´¦¡£ÈçÏÂËùʾ: ; ´íÎó: ʹÓú¯ÊýÃû×÷Ϊ±êºÅ JNE exit . . . exit: ; ÏÂÃæÊǸü¶àµÄASM´úÂë ÃÀÔª·ûºÅ$ÓÃÓÚÖ¸¶¨µ±Ç°Î»Öã¬ÈçÏÂËùÓ㬳£ÓÃÓÚÌõ¼þÌø×ª: JNE $+5 ; ÏÂÃæÕâÌõÖ¸ÁîµÄ³¤¶ÈÊÇ5¸ö×Ö½Ú JMP farlabel ;$+5£¬Ìøµ½ÁËÕâÀï . . . farlabel: Æß¡¢ aAdultescortireland En Categories Prussia Adult Escort Ireland ÔÚVisual C++ÖÐʹÓÃÄÚÁª»ã±à - GameRes.comz t t Sex o o Ireland Adult Escort Ireland Adult Escort Ireland fAdultescortireland En Categories Prussia Adult Escort Ireland ÔÚVisual C++ÖÐʹÓÃÄÚÁª»ã±à - GameRes.comt Adult Escort Ireland Adult Escort Ireland Adult Escort Ireland |