• 追加された行はこの色です。
  • 削除された行はこの色です。

* バイトコード [#t4292d88]
生成されるバイトコードの比較。

** 組み込み型vs組み込み型のラッパークラス [#j2458c83]
#code(c,){{
class MyUInt
{
    MyUInt( const uint& in aVal )
    {
        this.mVal = aVal;
    }
    uint mVal;
};

void cla()
{
    MyUInt i(0);
    i.mVal += 1;
}

//-----------------------------------------------------------
Temps: 2, 3

    0   0 *    PUSH     3
- 12,5 -
    1   3 *    SUSPEND
    2   3 *    VAR      v1
    3   4 *    SetV4    v2, 0x0          (i:0, f:0)
    5   4 *    VAR      v2
    6   5 *    GETREF   0
    7   5 *    GETREF   1
    8   5 *    ALLOC    0xa8cebf8, 66
- 13,5 -
   11   3 *    SUSPEND
   12   3 *    PSF      v1
   13   4 *    CHKREF
   14   4 *    RDS4
   15   4 *    ADDSi    16
   17   4 *    PopRPtr
   18   3 *    RDR4     v2
   19   3 *    ADDIi    v2, v2, 1
   22   3 *    WRTV4    v2
- 14,2 -
   23   3 *    SUSPEND
   24   3 *    PSF      v1
   25   4 *    FREE     0xa8cebf8
   27   3 * 0:
   27   0 *    RET      0

}}
#code(c,){{
void sca()
{
    uint i = 0;
    i += 1;
}
//-----------------------------------------------------------
Temps: 2

    0   0 *    PUSH     2
- 18,5 -
    1   2 *    SUSPEND
    2   2 *    SetV4    v1, 0x0          (i:0, f:0)
- 19,5 -
    4   2 *    SUSPEND
    5   2 *    ADDIi    v1, v1, 1
- 20,2 -
    8   2 *    SUSPEND
    9   2 * 0:
    9   0 *    RET      0

}}
極力組み込み型を使ったほうが良さげ。

** 普通の関数コールvsメンバ関数コール [#d676c000]
#code(c,){{
class Class
{
    void classFunc()
    {
    }
};

void callClassFunc( Class@ obj )
{
    obj.classFunc();
}
//-----------------------------------------------------------
Temps: 

- 48,5 -
    0   0 *    SUSPEND
    1   0 *    PSF      v0
    2   1 *    CHKREF
    3   1 *    RDS4
    4   1 *    CALL     68           (void Class::classFunc())
- 49,2 -
    6   0 *    SUSPEND
    7   0 * 0:
    7   0 *    PSF      v0
    8   1 *    FREE     0xa8d0230
   10   0 *    RET      1

}}

#code(c,){{
void func()
{
}

void callFunc()
{
    func();
}
//-----------------------------------------------------------
Temps: 

- 57,5 -
    0   0 *    SUSPEND
    1   0 *    CALL     74           (void func())
- 58,2 -
    3   0 *    SUSPEND
    4   0 * 0:
    4   0 *    RET      0

}}



    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS