¤¿¤Þ¤Ë¤Ã¤¡£ / 2004-04-27
| Æü | ·î | ²Ð | ¿å | ÌÚ | ¶â | ÅÚ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 |
2004-04-27 Tue
¢£ Windows Sound
via Miyabi's Page
¤¹¤²¤§¡£
¢£ Ê¡Å礵¤ó¤é¤ÎÏÀʸ¤Î¤Þ¤È¤á
³Æ Birthmark ¤ÎÄêµÁ¤Ê¤É¤Ï ¤¿¤Þ¤Ú¡¼¤¸Ê¬²È ¤«¤é¥À¥¦¥ó¥í¡¼¥É¤Ç¤¤ë pdf ¤Ê¤É¤ò¸æÍ÷²¼¤µ¤¤¡£
ref. [2004-03-12-5]
Æó¤Ä¤ÎÏÀʸ¤Ë¶¦Ä̤¹¤ëÉôʬ¤Ç¡¢²æ¡¹¤¬¹Í¤¨¤Æ¤¤¤ë¤³¤È¤È¤Î·èÄêŪ¤Ê°ã¤¤¤¬¤¢¤ë¡£¤³¤Î birthmark ¤ÎÌÜŪ¤À¡£
Èà¤é¤Ï birthmark ¤ÏÅðÍѤò¾ÚÌÀ¤¹¤ë¤â¤Î¤À¤È¸À¤Ã¤Æ¤¤¤ë¡£
¤·¤«¤·¡¢²æ¡¹¤Ï birthmark ¤ÏÅðÍѤò¾ÚÌÀ¤¹¤ë¤â¤Î¤Ç¤Ï¤Ê¤¤¤È¹Í¤¨¤Æ¤¤¤ë¡£
birthmark ¤Ï¤¢¤¯¤Þ¤Ç¡¢ÅðÍѤε¿¤¤¤¬¤¢¤ë¥×¥í¥°¥é¥à¤ò¸«¤Ä¤±½Ð¤¹¤â¤Î¤À¤È¹Í¤¨¤Æ¤¤¤ë¡£
ÅðÍѤξÚÌÀ¤Ï watermark ¤Ê¤ê¡¢code clone ¤Ê¤ê¤Ç¹Ô¤Ê¤¨¤ÐÎɤ¤¡£
birthmark ¤ÏÂçÎÌ¤Î¥×¥í¥°¥é¥à¤ÎÃæ¤«¤éÅðÍѤÀ¤Èµ¿¤ï¤·¤¤¤â¤Î¤ò¸«¤Ä¤±½Ð¤¹¤â¤Î¤À¡£¤È¹Í¤¨¤Æ¤¤¤ë¡£
¤½¤·¤Æ¡¤Æó¤Ä¤Î birthmark ¤ò¶¦¤Ë¼Â¸³¤·¤Æ¤¤¤Ê¤¤¤Î¤¬¤Á¤ç¤Ã¤È°ú¤Ã¤«¤«¤ë¡¥
¹Í»¡¤Ç½ª¤ï¤ë¤Î¤¬ÂÌÌܤȸÀ¤Ã¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤¬¡¤¹Í»¡¤¬¹ç¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò
¼Â¸³¤Ç³Î¤«¤á¤ë¤Î¤âÂçÀڤǤϤʤ¤¤Î¤«¤Ê¤¡¡¥
¤·¤«¤â¹¶·â(ÆñÆÉ²½)¤ËÂФ¹¤ëÂÑÀ¤Ã¤ÆÆ¬¤ÎÃæ¤Ç¤ÏÀ°Íý¤·¤¤ì¤Ê¤¤¤È»×¤¦¤·¡¤
¸¶¹Æ¤Çµó¤²¤é¤ì¤Æ¤¤¤ëÆñÆÉ²½¼êË¡¤Î¾¤Ë¤âÂô»³¤Î¼çÍפÊÊýË¡¤¬¤¢¤Ã¤¿¤ê¤¹¤ë¤·¡¥
Î㤨¤Ð¡¤Ê¸»úÎó¤Î°Å¹æ²½¤È¤«¡¤¥Þ¥ë¥Á¥¹¥ì¥Ã¥É²½¤È¤«¡¤¿ôÃͤÎʬ³ä¤È¤«¡¥¡¥¡¥
- Java¥¯¥é¥¹¥Õ¥¡¥¤¥ë¤ÎÅù²ÁÊÑ´¹¤ËÂÑÀ¤ò»ý¤Ä¥×¥í¥°¥é¥à»ØÌæÃê½ÐË¡
»ä¤¬ [2003-07-17] ¤Ë ISEC ¤Çȯɽ¤·¤¿ birthmark Ãê½ÐÊý¤Î¤¦¤Á¡¢
CVFV(Constant Values in Field Variables) ¤È IS (Inheritance Structure) ¤ÎÌäÂêÅÀ¤¬»ØÅ¦¤µ¤ì¤Æ¤¤¤ë¡£
CVFV ¤Ï½é´üÃͤò¸«¤ë¤Î¤Ç¡¢
public class Hoge{
private int fuga;
public Hoge(){
fuga = 3;
}
}
¤È¤¢¤ë¤Î¤ò
public class Hoge{
private int fuga;
public Hoge(){
fuga = 1;
fuga += 2;
}
}
¤ËÊѤ¨¤Æ¤·¤Þ¤¨¤Ð²þ¤¶¤ó¤Ç¤¤Æ¤·¤Þ¤¦¤È¤¤¤¦»ØÅ¦¡£
IS ¤ÎÊý¤Ï
public class SuperClassA{
:
}
public class ChildA extends SuperClassA{
:
}
¤ÎÆó¤Ä¤Î¥¯¥é¥¹¤Î´Ö¤Ë
public class DummySuperClassB extends SuperClassA{
// no any fields and methods
}
¤òÆþ¤ì¡¢ChildA ¥¯¥é¥¹¤ò
public class ChildA extends DummySuperClassB{
:
}
¤È¤¹¤ì¤ÐÎɤ¤¤È¤Î»ØÅ¦¡£
¤´¤â¤Ã¤È¤â¡£
¤¿¤À¤·¡¢CVFV ¤Î²þ¤¶¤óÊýË¡¤ËÂн褹¤ë¤Î¤Ï¤¢¤¯¤Þ¤Ç¥Ä¡¼¥ë¤Ê¤Î¤Ç¡¢Í¾¤êÌäÂê¤Ë¤Ï¤Ê¤é¤Ê¤¤¤È»×¤¦¡£
¤½¤Î¥Õ¥£¡¼¥ë¥É¤òÃíÌܤ¹¤ì¤Ð¤Ç¤¤ë¤è¤¦¤Êµ¤¤¬¤¹¤ë¡£
¤È¤Ï¸À¤¨¡¢°ìöÊÌ¤Î¥í¡¼¥«¥ëÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤¿¤ê¤¹¤ë¤È¡¢¤ª¼ê¾å¤²¤Ê¤Î¤Ï³Î¤«¡£
IS ¤ÎÊý¤Ï¡¢¤Ï¤¤¡¢¤Þ¤¢½ª¤ï¤Ã¤Æ¤Þ¤¹¡£
¤Ç¡¢SMC ¤Ë¤Ä¤¤¤Æ¤Ï birthmark ¤È¤·¤ÆÍ¸ú¤À¤È½ñ¤¤¤Æ¤¤¤ë¤±¤É¡¢Â¾¤ÎÆó¤Ä¤ÈƱ¤¸¤è¤¦¤Ê¤â¤ó¤À¤È»×¤¦¤±¤É¤Ê¤¡¡£
Èà¤é¤Ï¿·¤¿¤ËÄ󰯤¹¤ë birthmark ¤È¤·¤Æ¡Ö¥á¥½¥Ã¥É¤Î͸¥ª¡¼¥È¥Þ¥È¥ó²½¡×¤òµó¤²¤Æ¤¤¤ë¡£
¼ê½ç¤ò¤µ¤é¤Ã¤ÈÀâÌÀ¤¹¤ë¤È¡¢
(1) ¥ª¥Ú¥é¥ó¥É¥¹¥¿¥Ã¥¯¤Ø¤Î push ¤«¤é pop ¤Þ¤Ç¤Î instruction ¤ò°ì¤Ä¤Îµ¿»÷ instruction ¤È¤¹¤ë
(2) ¾å¤ÇÆÀ¤é¤ì¤¿µ¿»÷ instruction ¤Î¥·¡¼¥±¥ó¥¹¤Î¤¦¤Á¡¢Æþ¤ì´¹¤¨²Äǽ¤Ê instruction ¤ò°ì¤Ä¤Î¥°¥ë¡¼¥×¤È¤¹¤ë
(3) ¾å¤ÇÆÀ¤é¤ì¤¿¥°¥ë¡¼¥×¤ò¾ò·ïʬ´ô¤Ê¤É¤Î¥¸¥ã¥ó¥×¤Ç·Ò¤®¡¢¥ª¡¼¥È¥Þ¥È¥ó²½¤¹¤ë
(4) ÆÀ¤é¤ì¤¿¥ª¡¼¥È¥Þ¥È¥ó¤«¤é̵¾ò·ï¥¸¥ã¥ó¥×¤òºï½ü¤·¡¢¤½¤ì¤ò birthmark ¤È¤¹¤ë
¤³¤ó¤Ê´¶¤¸¤«¤Ê¤¡¡£º£¼ê¸µ¤Ë¸¶¹Æ¤¬¤Ê¤¤¤Î¤Ç¡¢¤Á¤ç¤Ã¤È¤¦¤í³Ð¤¨¡£
´Ö°ã¤¤¤Ëµ¤ÉÕ¤¤¤¿¿Í¤¬¤¤¤ì¤ÐÆÍ¤Ã¹þ¤ó¤Ç²¼¤µ¤¤¡£¸å¤Ç»ä¤â³Îǧ¤·¤Þ¤¹¡£
birthmark ¤È¤·¤Æ¤Ï¡¢»ä¤ÎÄ󰯤·¤¿¤â¤Î¤è¤ê¤â¶¯¤¤ÂÑÀ¤ò»ý¤Ä¤ó¤À¤í¤¦¤±¤É¡¢
¼ÂÁõ¤¬ÂçÊѤʵ¤¤¬¤¹¤ë¡£
¤Þ¤º¡¢(1) ¤«¤é¸À¤¦¤È push, pop ¤Ã¤ÆÃ±½ã¤Ëʤó¤Ç¤¤¤ë¤ï¤±¤¸¤ã¤Ê¤¤¡£
invoke Ì¿Îá¤â push, pop ¤ò¹Ô¤Ê¤¦¤Î¤Ç¡¢¤½¤Î´Ø·¸¤ò¸«¤Ä¤±¤ë»ö¤¬ÌÌÅݽ¤½¤¦¡£
Î㤨¤Ð¡¤
1: aload_0
2: iconst_0
3: aload_1
4: iconst_0
5: aload_0
6: arraylength
7: invokestatic System#arraycopy
¤È¤¤¤¦Ì¿ÎáÎó¤À¤È
System.arraycopy(localVariable0, 0, localVariable1, 0, localVariable0.length)
¤È¤¤¤¦Ì¿Îá¤ËÁêÅö¤¹¤ë¤Î¤À¤¬¡¤¤³¤Î¾ì¹ç¡¤
push 1: aload_0
push 2: iconst_0
push 3: aload_1
push 4: iconst_0
push 5: aload_0
pop, push 6: arraylength
pop*5 7: invokestatic System#arraycopy
¤È¤¤¤¦´Ø·¸¤À¡¥¤É¤³¤«¤é¤É¤³¤Þ¤Ç¤ò°ì¤Ä¤Îµ¼»÷ instruction ¤È¤¹¤ë¤Î¤«¤¬¤ï¤«¤é¤Ê¤¤¡¥
(2) ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÉûºîÍѤΤ¢¤ë¥¯¥é¥¹¤Î¥á¥½¥Ã¥É¸Æ½Ð¤ò¹Í¤¨¤ë¤È¡¢Æþ¤ì´¹¤¨²Äǽ¤«¤É¤¦¤«¤È¤¤¤¦¤Î¤Ï
¿Í¤¬ÆÉ¤Þ¤Ê¤¤¤È¤ï¤«¤é¤Ê¤½¤¦¡£
(3), (4) ¤ÏÆÃ¤ËÆÍ¤Ã¹þ¤à¤Ù¤¤È¤³¤í¤â¤Ê¤¤¡£
- ưŪ²òÀϤòÍѤ¤¤¿Java ¥¯¥é¥¹¥Õ¥¡¥¤¥ë¤Î¥×¥í¥°¥é¥à»ØÌæÃê½ÐË¡
¤³¤Ã¤Á¤Ï¥³¥ó¥»¥×¥È¤¬½ª¤ï¤Ã¤Æ¤¤¤ëµ¤¤¬¤¹¤ë¡¥
birthmark ¤ÏÅðÍѤòȯ¸«¤¹¤ëµ»½Ñ¤Ç¤¢¤Ã¤Æ¡¤ÅðÍѤò¾ÚÌÀ¤¹¤ë¤â¤Î¤Ç¤Ï¤Ê¤¤¡¥
ȯ¸«¤¹¤ë¤Î¤À¤«¤é¡¤¹â®¤Ë¡¤ÂçÎÌ¤Î¥×¥í¥°¥é¥à¤ò¸¡ºº¤¹¤ë¤³¤È¤¬½ÅÍפÀ¤È»×¤¦¡¥
¤½¤·¤Æ¡¤¸í¸¡½Ð¤ÏÁ´Á³ÌäÂê¤Ç¤Ï¤Ê¤¯¡¤¤½¤ì¤è¤ê¤âÅðÍѤµ¤ì¤¿¥×¥í¥°¥é¥à¤¬¸¡½Ð¤Ç¤¤Ê¤¤
¤È¤¤¤¦¤³¤È¤¬¤Ê¤¤¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡¥
¤Ç¡¤¤³¤Î¸¶¹Æ¤Ç¤Ï¥¯¥é¥¹¥Õ¥¡¥¤¥ë¤òưŪ¤Ë²òÀϤ·¤Æ¤¤¤ë¡¥
ưŪ¤Ë²òÀϤ¹¤ë¤È¤¤¤¦¤³¤È¤Ï¡¤¤â¤¦¤Û¤È¤ó¤É¤Î¾ì¹ç¡¤¼«Æ°²½¤Ç¤¤Ê¤¤¡¥
¼«Æ°²½¤Ç¤¤Ê¤¤»þÅÀ¤Ç birthmark ¤ÎÌÜŪ¤¬Ã£À®¤Ç¤¤Ê¤¤¤³¤È¤Ë¤Ê¤ë¡¥
¤Ç¡¤´Î¿´¤Î¼êË¡¤Ç¤¹¤¬¡¤¸¶¹Æ¤ò²¿ÅÙ¤âÆÉ¤ßÊÖ¤·¤¿¤Î¤Ç¤¹¤¬¡¤ÉÔÌÀ¤Ê²Õ½ê¤¬Â¿¤¯¤Æ
¤è¤¯¤ï¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡¥
¼«Ê¬¤ÎÄ󰯤·¤¿¼êË¡¤Î¼åÅÀ¤ò¤³¤ó¤Ê¤Ë¤µ¤é¤±¤À¤·¤Æ¤¤¤¤¤ó¤À¤í¤¦¤«¡¦¡¦¡¦¡£
¤Á¤Ê¤ß¤Ë¡¤»ä¤¬¤³¤³¤Ë½ñ¤¤¤¿¤¤¤Á¤ã¤â¤ó¤é¤·¤¤â¤ÎÁ´¤Æ¤òËþ¤¿¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
ºÇ½ª¹¹¿·»þ´Ö: 2008-09-04 19:19





