ÁëÊդξ®ÀÐ Âè123²ó ÁÏÀ¤µµ¡³£¸ì
¤¹¤Ù¤Æ¤Î¥³¥ó¥Ô¥å¡¼¥¿¤Ï¡Öµ¡³£¸ì¡×¤ò¼Â¹Ô¤¹¤ë¡£¤¹¤Ù¤Æ¤ÎCPU¤Ï¡ÖÌ¿Î᥻¥Ã¥È¡×¤ò»ý¤Á¡¢µ¡³£¸ì¤Ï¤³¤ÎÌ¿Î᥻¥Ã¥È¤ÎÁȤ߹ç¤ï¤»¤Çµ½Ò¤µ¤ì¤Æ¤¤¤ë¡£
µ¡³£¸ì¤Î¥×¥í¥°¥é¥ß¥ó¥°¤Ï¡¢CPU¤ÎÆÃÀ¤òÂδ¶¤Ç¤¤ëÍ£°ì¤ÎÊýË¡¤À¡£ºÇ¶á¤Ç¤Ï¡¢¹â¿å½à¸À¸ì¡Ê¹âµé¸À¸ì¡Ë¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°¤¬ÉáÄ̤À¤¬¡¢¥Þ¥¤¥¯¥í¥×¥í¥»¥Ã¥µ¤¬Æþ¼ê²Äǽ¤Ë¤Ê¤Ã¤¿1970ǯÂæ¤Ë¤Ï¡¢µ¡³£¸ì¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°¤Ï¤´¤¯ÉáÄ̤˹Ԥï¤ì¤Æ¤¤¤¿¡£
¤Ê¤Î¤Ç¡¢Åö»þ¤Î¼ñÌ£¿Í¤Ï¡¢¥Ë¥â¥Ë¥Ã¥¯¤Ê¤É¤ÇÌ¿Îá¤ò¹Í¤¨¤ë¤â¤Î¤Î¡¢¼«Ê¬¤Ç¥Ð¥¤¥Ê¥ê¤ËÊÑ´¹¤·¤Æ¥×¥í¥°¥é¥à¤òºî¤Ã¤Æ¤¤¤¿¡£¤³¤ì¤ò¥Ï¥ó¥É¥¢¥Ã¥»¥ó¥Ö¥ë¤È¤¤¤¦¡£¤¤¤í¤¤¤í¤ÊÊýË¡¤¬¤¢¤Ã¤¿¤¬¡¢É®¼Ô¤Ï¡¢°ìÅÙ¥¿¥¤¥×¥é¥¤¥¿¤ÇÂǤ俥˥â¥Ë¥Ã¥¯¤Ç½ñ¤¤¤¿¥×¥í¥°¥é¥à¤ò¡¢¤¢¤È¤«¤é16¿Ê¿ôɽ¸½¤Îµ¡³£¸ì¤Ëľ¤·¤Æ¤¤¤Ã¤¿¡£¤â¤Ã¤È¤â¡¢Åö»þ¤Î8 bit CPU¤ÎÌ¿Îá¤Ïñ½ã¤Ç¡¢Èæ³ÓŪ´Êñ¤ËÍý²ò¤Ç¤¤¿¡£
µ¡³£¸ìÌ¿Îá¤Ç¤Ï¡¢¥á¥â¥ê¥¢¥É¥ì¥¹¤òÌ¿Îá¤Î°ú¿ô¡Ê¥ª¥Ú¥é¥ó¥É¡Ë¤Ë½ñ¤«¤Í¤Ð¤Ê¤é¤Ê¤¤¡£¥¢¥»¥ó¥Ö¥é¤Ç¤Ï¡¢µ¡³£¸ì¤òÀ¸À®¤¹¤ë¤È¤¤Ë¼«Æ°Åª¤Ë¥ª¥Ú¥é¥ó¥É¤Ë¥¢¥É¥ì¥¹¤òÆþ¤ì¤Æ¤¯¤ì¤ë¡£¤¿¤È¤¨¤Ð¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¸Æ¤Ó½Ð¤·CALLÌ¿Îá¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤Ë¥µ¥Ö¥ë¡¼¥Á¥ó¤Î³«»Ï¥¢¥É¥ì¥¹¤ò½ñ¤¹þ¤àɬÍפ¬¤¢¤ë¡£¥¢¥»¥ó¥Ö¥é¤Ç¤Ï¡ÖCALL SUB01¡×¤È½ñ¤±¤Ð¤è¤¤¡£¤¢¤È¤«¤é¥µ¥Ö¥ë¡¼¥Á¥ó¤ò½ñ¤¤¤Æ¡¢ÀèƬ¤ËƱ¤¸¥é¥Ù¥ë¡ÖSUB01¡×¤òµ½Ò¤¹¤ì¤Ð¤è¤«¤Ã¤¿¡£
¤·¤«¤·¡¢¥Ï¥ó¥É¥¢¥Ã¥»¥ó¥Ö¥ë¤Î¾ì¹ç¡¢¥ª¥Ú¥é¥ó¥É¤Î¥¢¥É¥ì¥¹¤Î°·¤¤¤¬ÌÌÅݤÀ¤Ã¤¿¡£¥×¥í¥°¥é¥à¤ò½ñ¤½ª¤¨¡¢ÀèƬ¤«¤é16¿Ê¿ô¤Îµ¡³£¸ì¤ËÊÑ´¹¤·¤Æ¤¤¤¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤Î³«»Ï¥¢¥É¥ì¥¹¤¬·èÄꤹ¤ë¤È¡¢¤è¤¦¤ä¤¯CALLÌ¿Îá¤Î¥ª¥Ú¥é¥ó¥É¤¬·è¤Þ¤ë¡£¤³¤¦¤·¤¿¤È¤³¤í¤Ï°ì¤«½ê¤À¤±¤Ç¤Ê¤¯¡¢Ê£¿ô²Õ½ê¤¢¤ë¤Î¤¬ÉáÄ̤À¡£°ì±þ¥Æ¥¯¥Ë¥Ã¥¯¤È¤·¤Æ¤Ï¡¢¥×¥í¥°¥é¥à¤ÎÀèƬÉÕ¶á¤Ë¥µ¥Ö¥ë¡¼¥Á¥ó¤Ø¤Î¥¸¥ã¥ó¥×Ì¿Îá¤òʤ٤ơ¢¤½¤³¤òCALL¤Ç¸Æ¤Ó½Ð¤¹¤è¤¦¤Ë¤¹¤ë¤È¡¢¥¢¥É¥ì¥¹¤òÁᤤÃʳ¬¤Ç¸ÇÄê¤Ç¤¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤Î¥¢¥É¥ì¥¹¤¬ÊѤï¤Ã¤Æ¤â½¤Àµ²Õ½ê¤Ï£±¤Ä¤À¤±¤Ë¤Ê¤ë¡¢¤È¤¤¤¦¤â¤Î¤¬¤¢¤ë¡Ê¤½¤ì¤Ç¤â²¿²ó¤â´Ö°ã¤Ã¤¿¤¬¡Ä¡Ä¡Ë¡£
¤¤¤Þ¤Ç¤â¥×¥í¥°¥é¥à¤ò½ñ¤¯¤³¤È¤¬¤¢¤ë¤¬¡¢¤¿¤Þ¤ËÀΤΥϥó¥É¥¢¥Ã¥»¥ó¥Ö¥ë¤ò²û¤«¤·¤¯´¶¤¸¤ë¤³¤È¤¬¤¢¤ë¡£¤·¤«¤·¡¢º£¡¢µ¡³£¸ìÌ¿Îá¤òľÀܽñ¤¤¤Æ¼Â¹Ô¤µ¤»¤è¤¦¤È¤¹¤ë¤Î¤Ï¡¢¤«¤Ê¤êÂçÊѤʺî¶È¤À¡£C++¤Ê¤É¤Ë¤Ï¡¢µ¡³£¸ìÌ¿Îá¤ò¥Ë¥â¥Ë¥Ã¥¯¤Çµ½Ò¤·¤ÆËä¤á¹þ¤à»ÅÁȤߤ¬¤¢¤ë¤Î¤À¤¬¡¢É®¼Ô¤Î¥»¥ó¥Á¥á¥ó¥¿¥ê¥º¥à¤Ë¤ÏÉÔÄà¤ê¹ç¤¤¤Ç¤¢¤ë¡£
É®¼Ô¤Ï¡¢Visual Studio¤Ê¤É¤Ç¥×¥í¥°¥é¥à¤òºî¤ê¤¿¤¤¤Î¤Ç¤Ï¤Ê¤¯¡¢¿ô¥Ð¥¤¥ÈÄøÅ٤ε¡³£¸ì¤ò¥Ï¥ó¥É¥¢¥Ã¥»¥ó¥Ö¥ë¤·¤Æ¼Â¹Ô¤µ¤»¤ß¤¿¤¤¤À¤±¤Ê¤Î¤À¡£MS-DOS¤¬Æ°¤¯¤Ê¤éÉÕ°¤ÎDEBUG.EXE¤ò»È¤¦¤È¡¢´Ê°×¥¢¥»¥ó¥Ö¥é¤Îµ¡Ç½¤¬»È¤¨¤ë¡£¤·¤«¤·¡¢¤½¤Î¤¿¤á¤Ë²¾Á۴Ķ¤òºî¤ê¡¢MS-DOS¤òõ¤·¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤Î¤âÂ礬¤«¤ê¤¹¤®¤ë¡£
¤¿¤À¡¢Windows¤Ê¤É¤ÎºÇ¶á¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Ï¥ó¥É¥¢¥Ã¥»¥ó¥Ö¥ë¤·¤¿µ¡³£¸ì¤Î¼Â¹Ô¤Ï¡¢°ÊÁ°¤Û¤É´Êñ¤Ç¤Ï¤Ê¤¤¡£¤È¤¤¤¦¤Î¤Ï¡¢¥¦¥£¥ë¥¹¤Î²¹¾²¤Ë¤Ê¤Ã¤¿¤¿¤á¡¢¥Ç¡¼¥¿Éôʬ¤Ëµ¡³£¸ì¤ò½ñ¤¹þ¤ó¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤ë¤«¤é¤À¡£
¿ô¥Ð¥¤¥È¤Îµ¡³£¸ì¤ò´Êñ¤Ë¼Â¹Ô¤Ç¤¤Ê¤¤¤«¤È¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¸¡º÷¤·¤Æ¸«¤Ä¤±¤¿¤Î¤¬¡ÖIs it possible to execute an x86 assembly sequence from within C#¡×¤È¤¤¤¦µ»ö¡£¤³¤³¤Ç»²¾È¤·¤Æ¤¤¤ë¡Öexecute-byte-array.cs¡×¤È¤¤¤¦¥×¥í¥°¥é¥à¤ò»È¤¨¤Ð¡¢¥Ð¥¤¥ÈÇÛÎó¤Çµ½Ò¤·¤¿µ¡³£¸ì¥×¥í¥°¥é¥à¤òC#¤«¤é¸Æ¤Ó½Ð¤·¤Æ¼Â¹Ô¤Ç¤¤ë¡£¤½¤Î¤¿¤á¤Ë¤Ï¡¢¥á¥â¥êÎΰè¤ò³ÎÊݤ·¤Æ¡¢¥×¥í¥°¥é¥à¼Â¹ÔÍѤËÀßÄꤷ¤¿¾å¤Çµ¡³£¸ì¤ò½ñ¤¹þ¤ó¤Ç¡¢´Ø¿ô¤È¤·¤Æ¸Æ¤Ó½Ð¤¹¡£
³µÇ°Åª¤Ë¤Ï¤³¤ì¤Ç¤¤¤¤¤Î¤Ç¡¢¤³¤ì¤ò²þÎɤ·¤Æ¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤Ç»ØÄꤷ¤¿16¿Ê¿ô¤Îµ¡³£¸ì¤ò¼Â¹Ô¤Ç¤¤ë¡¢ExecML¤È¤¤¤¦¥×¥í¥°¥é¥à¤òºî¤Ã¤¿¡Ê¼Ì¿¿01¡Ë¡£GitHub¤Ë¥½¡¼¥¹¥³¡¼¥É¤òÃÖ¤¤¤Æ¤¢¤ë¡£
¼Ì¿¿01: ExecML.exe¤Î¼Â¹Ô¡£¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î°ú¿ô¤Î¤¦¤Á¡¢ºÇ½é¤Î£²¤Ä¤ÏRCX¤ÈRDX¥ì¥¸¥¹¥¿¤ËÆþ¤ë64bit¤Î¥Ñ¥é¥á¡¼¥¿¡¼¡£¤½¤Î¸å¤í¤Î48 89¡Ä¡Ä¤È¤Ê¤Ã¤Æ¤¤¤ëÉôʬ¤¬µ¡³£¸ì¡Ê°ú¿ô¤Ï¤¹¤Ù¤Æ16¿Ê¿ô¤Ç¤¢¤ë¡Ë¡£µ¡³£¸ì¤Ï¡¢²¼¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢RCX¤òRAX¤Ë¥³¥Ô¡¼¤·¤¿¤¢¤È¡¢RDX¤ÈRAX¤ò²Ã»»¡Ê·ë²Ì¤ÏRAX¤Ë»Ä¤ë¡Ë¤·¡¢¥á¥¤¥ó¥×¥í¥°¥é¥à¤ËÌá¤ë¡ÊRET¡Ë¤À¤±¤À
64 bitÈÇWindows¡Êx64¡Ë¤Ç¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¤¤Î¥ë¡¼¥ë¤Ï¡Öx64 ¤Ç¤Î¸Æ¤Ó½Ð¤·µ¬Â§¡×¤Ëµ½Ò¤¬¤¢¤ë¡£¤³¤ì¤Ë¤è¤ì¤Ð¡¢ºÇ½é¤Î2¤Ä°ú¿ô¤Ï¡¢RCX¡¢RDX¥ì¥¸¥¹¥¿¤ËÆþ¤ë¡£¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ºÇ½é¤Î2¤Ä¤Î°ú¿ô¤¬RCX¡¢RDX¤ËÆþ¤Ã¤Æµ¡³£¸ì¥×¥í¥°¥é¥à¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£µ¡³£¸ì¥×¥í¥°¥é¥à¤Ï¡¢½èÍý·ë²Ì¤òRAX¤ËÆþ¤ì¤ÆRetÌ¿Îá¡Ê0xC3¡Ë¤ÇÌá¤ë¤è¤¦¤Ë¤¹¤ì¤Ð¤è¤¤¡£
º£²ó¤Î¥¿¥¤¥È¥ë¥Í¥¿¤Ï¡¢J¡¦P¡¦¥Û¡¼¥¬¥ó¤Î¡ÖÁÏÀ¤µµ¡³£¡×¡Ê¸¶ÂêGenesis Machine,1978¡Ë¤Ç¤¢¤ë¡£¸¶ºî¤Î´©¹Ô»þ¡¢É®¼Ô¤Ïµ¡³£¸ì¤È³ÊÆ®Ãæ¤À¤Ã¤¿¡£ËÝÌõ¤òºÇ½é¤ËÆɤó¤À¤È¤¤Ë¤Ï¡¢¼ã¤«¤Ã¤¿¤Î¤Ç¤«¤Ê¤ê´¶Æ°¤·¤¿¡£¤À¤¬¡¢ºÐ¼è¤ë¤È¥À¥á¤À¤Í¤§¡¢Ëܽñ¸åȾ¤Ë¡¢¤Ä¤¤¤Æ¹Ô¤±¤Ê¤¤¡£¤È¤Ï¤¤¤¨¡¢Á°È¾¤Î²Í¶õʪÍýÍýÏÀ¤Î¤È¤³¤í¤À¤±¤Ç¤âÆɤà²ÁÃͤϤ¢¤ë¡£