Á°¤ÎÆü / ¼¡¤ÎÆü / ºÇ¿· / 2004-04

¤¿¤Þ¤Ë¤Ã¤­¡£ / 2004-04-27

2004-04
Æü·î²Ð¿åÌÚ¶âÅÚ
123
45678910
11121314151617
18192021222324
252627282930

2004-04-27 Tue

¢£ Ê¡Å礵¤ó¤é¤ÎÏÀʸ¤Î¤Þ¤È¤á

³Æ 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 ¤ÎÌÜŪ¤¬Ã£À®¤Ç¤­¤Ê¤¤¤³¤È¤Ë¤Ê¤ë¡¥

¤Ç¡¤´Î¿´¤Î¼êË¡¤Ç¤¹¤¬¡¤¸¶¹Æ¤ò²¿ÅÙ¤âÆÉ¤ßÊÖ¤·¤¿¤Î¤Ç¤¹¤¬¡¤ÉÔÌÀ¤Ê²Õ½ê¤¬Â¿¤¯¤Æ
¤è¤¯¤ï¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡¥

¼«Ê¬¤ÎÄ󰯤·¤¿¼êË¡¤Î¼åÅÀ¤ò¤³¤ó¤Ê¤Ë¤µ¤é¤±¤À¤·¤Æ¤¤¤¤¤ó¤À¤í¤¦¤«¡¦¡¦¡¦¡£

¤Á¤Ê¤ß¤Ë¡¤»ä¤¬¤³¤³¤Ë½ñ¤¤¤¿¤¤¤Á¤ã¤â¤ó¤é¤·¤­¤â¤ÎÁ´¤Æ¤òËþ¤¿¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥

Category: [¸¦µæ][birthmark]

¢£ Sandmark

version 3.4 ¤¬ comming soon ¤é¤·¤¤¡¥

Category: [Java][IPP][Tool]

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

Á°¤ÎÆü / ¼¡¤ÎÆü / ºÇ¿· / 2004-04

¥«¥Æ¥´¥ê