- 追加された行はこの色です。
- 削除された行はこの色です。
* 道のり [#s3b4b6c0]
- 意味解析
-- まずutilityと関数だけにしぼる
-- 全てのModuleをシンボルツリーに登録
-- 全ての型をシンボルツリーに登録
-- 関数をシンボルツリーに登録。
-- 関数の中身を意味解析
--- 関数の中身のTypePathやIdentPathのシンボルを解決
--- 意味解析したStatementに置き換え。
近々のやることリスト
- return 文
- function call
- const 対応
- float 対応
- ref 対応
* 途中経過 [#l611ad77]
#code(c,){{
module App.EntryPoint;
utility EntryPoint
{
static void Arithmetic(const int aA , const int aB)
{
int add = aA + aB;
int sub = aA - aB;
int mul = aA * aB;
int div = aA / aB;
int mod = aA % aB;
}
static void BitOp(const int aA , const int aB)
{
int and = aA & aB;
int or = aA | aB;
int xor = aA ^ aB;
}
static void ShiftOp(const int aA , const int aB)
{
int shiftL = aA << aB;
int shiftR = aA >> aB;
}
static void AssignExpr(const int aA)
{
int val = aA;
val += aA;
val -= aA;
val *= aA;
val /= aA;
val %= aA;
val &= aA;
val |= aA;
val ^= aA;
val <<= aA;
val >>= aA;
}
static void PostfixIncDec()
{
int a = 1;
int inc = a++;
int dec = a--;
}
static void UnaryOp()
{
int a = 1;
int inc = ++a;
int dec = --a;
int positive = +a;
int negative = -a;
int bitWiseNot = ~a;
bool logicalNot = !(a == 0);
}
static void DeclBoolVar()
{
bool boolValue;
bool boolValueTrue = true;
bool boolValueTrue = false;
}
static void RelationalOp()
{
bool lessTest = 1 < 2;
bool lessEqualTest = 3 <= 4;
bool greaterTest = 5 > 6;
bool greaterEqualTest = 7 >= 8;
}
static void EqualityOp()
{
bool intEqual = 1 == 2;
bool intNotEqual = 2 != 3;
bool boolEqual = intEqual == intNotEqual;
bool boolNotEqual = intNotEqual != intEqual;
}
static void LogicalOp( const int aArg )
{
bool logicalAnd = 0 <= aArg && aArg < 10;
bool logicalOr = 0 < aArg || 10 <= aArg;
}
static void While()
{
int i = 0;
// normal
while ( i < 10 )
{
++i;
}
// continue test
while ( i < 10 )
{
i += 1;
continue;
}
// break test
while ( i < 10 )
{
break;
}
}
static void If( const int aA , const int aB )
{
int result;
if ( aA == aB )
{
result = 0;
}
else if ( aA < aB )
{
result = -1;
}
else if ( aB < aA )
{
result = 1;
}
}
static void DoWhile( const int aLoopCount )
{
int i = 1;
do
{
i += i;
if ( i == 5 )
{// break test
break;
}
if ( i == 6 )
{// continue test
continue;
}
}
while( i < aLoopCount );
}
static void For()
{
for ( int i = 0; i < 10; i++ )
{
for ( int k = 0; k < 10; ++k )
{// break test
break;
}
// continue test
continue;
}
}
static void ReturnNoType()
{
return;
}
static bool ReturnBool( const int aArg )
{
if ( ( aArg % 2 ) == 0 )
{
return true;
}
return false;
}
static void FuncVoidNoArg()
{
}
static void CallFuncVoidNoArg()
{
FuncVoidNoArg();
}
static int FuncIntNoArg()
{
return 1;
}
static void CallFuncIntNoArg()
{
int result = FuncIntNoArg();
}
static int FuncIntWithArg( const int aArg )
{
return aArg + 1;
}
static void CallFuncIntWithArg()
{
int result = FuncIntWithArg( 1 );
}
}
}}
#code(xml,){{
<?xml version="1.0" encoding="utf-8"?>
<xdata_root
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
major_version="1"
minor_version="2"
>
<!--BCModule-->
<!--version (0.1.0.0)--><uint8 value="0"/><uint8 value="1"/><uint8 value="0"/><uint8 value="0"/>
<!--path--><string_ref value="App.EntryPoint"/>
<!--constantTable--><reference label_name="LabelConstantTable"/>
<!--symbolTable--><reference label_name="LabelSymbolTable"/>
<!--objectTypeList--><reference label_name="LabelObjectTypeList"/>
<!--BCConstantValueTable-->
<align value="8"/>
<label name="LabelConstantTable"/>
<!--size--><uint32 value="40"/>
<!--0x0000:--><sint32 value="1"/>
<!--0x0004:--><sint32 value="0"/>
<!--0x0008:--><sint32 value="2"/>
<!--0x000C:--><sint32 value="3"/>
<!--0x0010:--><sint32 value="4"/>
<!--0x0014:--><sint32 value="5"/>
<!--0x0018:--><sint32 value="6"/>
<!--0x001C:--><sint32 value="7"/>
<!--0x0020:--><sint32 value="8"/>
<!--0x0024:--><sint32 value="10"/>
<!--BCSymbolTable-->
<align value="8"/>
<label name="LabelSymbolTable"/>
<!--count--><uint32 value="3"/>
<string_ref value="App.EntryPoint.FuncVoidNoArg()"/>
<string_ref value="App.EntryPoint.FuncIntNoArg()"/>
<string_ref value="App.EntryPoint.FuncIntWithArg()"/>
<!--BCObjectTypeList-->
<align value="4"/>
<label name="LabelObjectTypeList"/>
<!--count--><uint32 value="1"/>
<reference label_name="LabelObjectType:App.EntryPoint"/>
<!--BCObjectType(App.EntryPoint)-->
<align value="4"/>
<label name="LabelObjectType:App.EntryPoint"/>
<!--path--><string_ref value="App.EntryPoint"/>
<!--FunctionList--><reference label_name="LabelFunctionList:App.EntryPoint"/>
<!--BCFunctionList(App.EntryPoint)-->
<align value="4"/>
<label name="LabelFunctionList:App.EntryPoint"/>
<!--count--><uint32 value="22"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.Arithmetic"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.BitOp"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.ShiftOp"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.AssignExpr"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.PostfixIncDec"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.UnaryOp"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.DeclBoolVar"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.RelationalOp"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.EqualityOp"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.LogicalOp"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.While"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.If"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.DoWhile"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.For"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.ReturnNoType"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.ReturnBool"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.FuncVoidNoArg"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.CallFuncVoidNoArg"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.FuncIntNoArg"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.CallFuncIntNoArg"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.FuncIntWithArg"/>
<!--Function--><reference label_name="LabelFunction:App.EntryPoint.CallFuncIntWithArg"/>
<!--BCFunction(App.EntryPoint.Arithmetic())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.Arithmetic()"/>
<!--name--><string_ref value="Arithmetic"/>
<reference label_name="LabelOpCode:App.EntryPoint.Arithmetic()"/>
<!--BCOpCode(App.EntryPoint.Arithmetic())-28bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.Arithmetic()"/>
<!--[0000]FENTER 0x07 0x02--><uint8 value="31"/><uint8 value="7"/><uint8 value="2"/><uint8 value="255"/>
<!--[0001]ADDI32 SR02 SR00 SR01--><uint8 value="7"/><uint8 value="2"/><uint8 value="0"/><uint8 value="1"/>
<!--[0002]SUBI32 SR03 SR00 SR01--><uint8 value="8"/><uint8 value="3"/><uint8 value="0"/><uint8 value="1"/>
<!--[0003]MULS32 SR04 SR00 SR01--><uint8 value="9"/><uint8 value="4"/><uint8 value="0"/><uint8 value="1"/>
<!--[0004]DIVS32 SR05 SR00 SR01--><uint8 value="10"/><uint8 value="5"/><uint8 value="0"/><uint8 value="1"/>
<!--[0005]MODS32 SR06 SR00 SR01--><uint8 value="11"/><uint8 value="6"/><uint8 value="0"/><uint8 value="1"/>
<!--[0006]FLEAVE 0x07--><uint8 value="32"/><uint8 value="7"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.BitOp())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.BitOp()"/>
<!--name--><string_ref value="BitOp"/>
<reference label_name="LabelOpCode:App.EntryPoint.BitOp()"/>
<!--BCOpCode(App.EntryPoint.BitOp())-20bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.BitOp()"/>
<!--[0000]FENTER 0x05 0x02--><uint8 value="31"/><uint8 value="5"/><uint8 value="2"/><uint8 value="255"/>
<!--[0001]ANDI32 SR02 SR00 SR01--><uint8 value="21"/><uint8 value="2"/><uint8 value="0"/><uint8 value="1"/>
<!--[0002]ORI32 SR03 SR00 SR01--><uint8 value="22"/><uint8 value="3"/><uint8 value="0"/><uint8 value="1"/>
<!--[0003]XORI32 SR04 SR00 SR01--><uint8 value="23"/><uint8 value="4"/><uint8 value="0"/><uint8 value="1"/>
<!--[0004]FLEAVE 0x05--><uint8 value="32"/><uint8 value="5"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.ShiftOp())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.ShiftOp()"/>
<!--name--><string_ref value="ShiftOp"/>
<reference label_name="LabelOpCode:App.EntryPoint.ShiftOp()"/>
<!--BCOpCode(App.EntryPoint.ShiftOp())-16bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.ShiftOp()"/>
<!--[0000]FENTER 0x04 0x02--><uint8 value="31"/><uint8 value="4"/><uint8 value="2"/><uint8 value="255"/>
<!--[0001]SLLI32 SR02 SR00 SR01--><uint8 value="26"/><uint8 value="2"/><uint8 value="0"/><uint8 value="1"/>
<!--[0002]SLRI32 SR03 SR00 SR01--><uint8 value="27"/><uint8 value="3"/><uint8 value="0"/><uint8 value="1"/>
<!--[0003]FLEAVE 0x04--><uint8 value="32"/><uint8 value="4"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.AssignExpr())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.AssignExpr()"/>
<!--name--><string_ref value="AssignExpr"/>
<reference label_name="LabelOpCode:App.EntryPoint.AssignExpr()"/>
<!--BCOpCode(App.EntryPoint.AssignExpr())-52bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.AssignExpr()"/>
<!--[0000]FENTER 0x02 0x01--><uint8 value="31"/><uint8 value="2"/><uint8 value="1"/><uint8 value="255"/>
<!--[0001]LDSRSR SR01 SR00--><uint8 value="4"/><uint8 value="1"/><uint8 value="0"/><uint8 value="255"/>
<!--[0002]ADDI32 SR01 SR01 SR00--><uint8 value="7"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0003]SUBI32 SR01 SR01 SR00--><uint8 value="8"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0004]MULS32 SR01 SR01 SR00--><uint8 value="9"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0005]DIVS32 SR01 SR01 SR00--><uint8 value="10"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0006]MODS32 SR01 SR01 SR00--><uint8 value="11"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0007]ANDI32 SR01 SR01 SR00--><uint8 value="21"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0008]ORI32 SR01 SR01 SR00--><uint8 value="22"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0009]XORI32 SR01 SR01 SR00--><uint8 value="23"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[000A]SLLI32 SR01 SR01 SR00--><uint8 value="26"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[000B]SLRI32 SR01 SR01 SR00--><uint8 value="27"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[000C]FLEAVE 0x02--><uint8 value="32"/><uint8 value="2"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.PostfixIncDec())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.PostfixIncDec()"/>
<!--name--><string_ref value="PostfixIncDec"/>
<reference label_name="LabelOpCode:App.EntryPoint.PostfixIncDec()"/>
<!--BCOpCode(App.EntryPoint.PostfixIncDec())-28bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.PostfixIncDec()"/>
<!--[0000]FENTER 0x03 0x00--><uint8 value="31"/><uint8 value="3"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0000--><uint8 value="3"/><uint8 value="0"/><uint16 value="0"/>
<!--[0002]LDSRSR SR01 SR00--><uint8 value="4"/><uint8 value="1"/><uint8 value="0"/><uint8 value="255"/>
<!--[0003]INCI32 SR00--><uint8 value="12"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0004]LDSRSR SR02 SR00--><uint8 value="4"/><uint8 value="2"/><uint8 value="0"/><uint8 value="255"/>
<!--[0005]DECI32 SR00--><uint8 value="13"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0006]FLEAVE 0x03--><uint8 value="32"/><uint8 value="3"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.UnaryOp())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.UnaryOp()"/>
<!--name--><string_ref value="UnaryOp"/>
<reference label_name="LabelOpCode:App.EntryPoint.UnaryOp()"/>
<!--BCOpCode(App.EntryPoint.UnaryOp())-52bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.UnaryOp()"/>
<!--[0000]FENTER 0x07 0x00--><uint8 value="31"/><uint8 value="7"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0000--><uint8 value="3"/><uint8 value="0"/><uint16 value="0"/>
<!--[0002]INCI32 SR00--><uint8 value="12"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0003]LDSRSR SR01 SR00--><uint8 value="4"/><uint8 value="1"/><uint8 value="0"/><uint8 value="255"/>
<!--[0004]DECI32 SR00--><uint8 value="13"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0005]LDSRSR SR02 SR00--><uint8 value="4"/><uint8 value="2"/><uint8 value="0"/><uint8 value="255"/>
<!--[0006]LDSRSR SR03 SR00--><uint8 value="4"/><uint8 value="3"/><uint8 value="0"/><uint8 value="255"/>
<!--[0007]NEGS32 SR04 SR00--><uint8 value="14"/><uint8 value="4"/><uint8 value="0"/><uint8 value="255"/>
<!--[0008]NTI32 SR05 SR00--><uint8 value="24"/><uint8 value="5"/><uint8 value="0"/><uint8 value="255"/>
<!--[0009]LDSRC4 SR06 0x0004--><uint8 value="3"/><uint8 value="6"/><uint16 value="4"/>
<!--[000A]EQI32 SR06 SR00 SR06--><uint8 value="17"/><uint8 value="6"/><uint8 value="0"/><uint8 value="6"/>
<!--[000B]NTBOOL SR06 SR06--><uint8 value="25"/><uint8 value="6"/><uint8 value="6"/><uint8 value="255"/>
<!--[000C]FLEAVE 0x07--><uint8 value="32"/><uint8 value="7"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.DeclBoolVar())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.DeclBoolVar()"/>
<!--name--><string_ref value="DeclBoolVar"/>
<reference label_name="LabelOpCode:App.EntryPoint.DeclBoolVar()"/>
<!--BCOpCode(App.EntryPoint.DeclBoolVar())-20bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.DeclBoolVar()"/>
<!--[0000]FENTER 0x03 0x00--><uint8 value="31"/><uint8 value="3"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRZR SR00--><uint8 value="1"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0002]LDSRBT SR01--><uint8 value="2"/><uint8 value="1"/><uint16 value="65535"/>
<!--[0003]LDSRZR SR02--><uint8 value="1"/><uint8 value="2"/><uint16 value="65535"/>
<!--[0004]FLEAVE 0x03--><uint8 value="32"/><uint8 value="3"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.RelationalOp())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.RelationalOp()"/>
<!--name--><string_ref value="RelationalOp"/>
<reference label_name="LabelOpCode:App.EntryPoint.RelationalOp()"/>
<!--BCOpCode(App.EntryPoint.RelationalOp())-56bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.RelationalOp()"/>
<!--[0000]FENTER 0x05 0x00--><uint8 value="31"/><uint8 value="5"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0000--><uint8 value="3"/><uint8 value="0"/><uint16 value="0"/>
<!--[0002]LDSRC4 SR01 0x0008--><uint8 value="3"/><uint8 value="1"/><uint16 value="8"/>
<!--[0003]LTS32 SR00 SR00 SR01--><uint8 value="15"/><uint8 value="0"/><uint8 value="0"/><uint8 value="1"/>
<!--[0004]LDSRC4 SR01 0x000C--><uint8 value="3"/><uint8 value="1"/><uint16 value="12"/>
<!--[0005]LDSRC4 SR02 0x0010--><uint8 value="3"/><uint8 value="2"/><uint16 value="16"/>
<!--[0006]LES32 SR01 SR01 SR02--><uint8 value="16"/><uint8 value="1"/><uint8 value="1"/><uint8 value="2"/>
<!--[0007]LDSRC4 SR02 0x0014--><uint8 value="3"/><uint8 value="2"/><uint16 value="20"/>
<!--[0008]LDSRC4 SR03 0x0018--><uint8 value="3"/><uint8 value="3"/><uint16 value="24"/>
<!--[0009]LTS32 SR02 SR03 SR02--><uint8 value="15"/><uint8 value="2"/><uint8 value="3"/><uint8 value="2"/>
<!--[000A]LDSRC4 SR03 0x001C--><uint8 value="3"/><uint8 value="3"/><uint16 value="28"/>
<!--[000B]LDSRC4 SR04 0x0020--><uint8 value="3"/><uint8 value="4"/><uint16 value="32"/>
<!--[000C]LES32 SR03 SR04 SR03--><uint8 value="16"/><uint8 value="3"/><uint8 value="4"/><uint8 value="3"/>
<!--[000D]FLEAVE 0x05--><uint8 value="32"/><uint8 value="5"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.EqualityOp())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.EqualityOp()"/>
<!--name--><string_ref value="EqualityOp"/>
<reference label_name="LabelOpCode:App.EntryPoint.EqualityOp()"/>
<!--BCOpCode(App.EntryPoint.EqualityOp())-40bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.EqualityOp()"/>
<!--[0000]FENTER 0x04 0x00--><uint8 value="31"/><uint8 value="4"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0000--><uint8 value="3"/><uint8 value="0"/><uint16 value="0"/>
<!--[0002]LDSRC4 SR01 0x0008--><uint8 value="3"/><uint8 value="1"/><uint16 value="8"/>
<!--[0003]EQI32 SR00 SR00 SR01--><uint8 value="17"/><uint8 value="0"/><uint8 value="0"/><uint8 value="1"/>
<!--[0004]LDSRC4 SR01 0x0008--><uint8 value="3"/><uint8 value="1"/><uint16 value="8"/>
<!--[0005]LDSRC4 SR02 0x000C--><uint8 value="3"/><uint8 value="2"/><uint16 value="12"/>
<!--[0006]NEI32 SR01 SR01 SR02--><uint8 value="18"/><uint8 value="1"/><uint8 value="1"/><uint8 value="2"/>
<!--[0007]EQBOOL SR02 SR00 SR01--><uint8 value="19"/><uint8 value="2"/><uint8 value="0"/><uint8 value="1"/>
<!--[0008]NEBOOL SR03 SR01 SR00--><uint8 value="20"/><uint8 value="3"/><uint8 value="1"/><uint8 value="0"/>
<!--[0009]FLEAVE 0x04--><uint8 value="32"/><uint8 value="4"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.LogicalOp())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.LogicalOp()"/>
<!--name--><string_ref value="LogicalOp"/>
<reference label_name="LabelOpCode:App.EntryPoint.LogicalOp()"/>
<!--BCOpCode(App.EntryPoint.LogicalOp())-48bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.LogicalOp()"/>
<!--[0000]FENTER 0x03 0x01--><uint8 value="31"/><uint8 value="3"/><uint8 value="1"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR01 0x0004--><uint8 value="3"/><uint8 value="1"/><uint16 value="4"/>
<!--[0002]LES32 SR01 SR01 SR00--><uint8 value="16"/><uint8 value="1"/><uint8 value="1"/><uint8 value="0"/>
<!--[0003]JMPNEG SR01 +00003--><uint8 value="30"/><uint8 value="1"/><sint16 value="3"/>
<!--[0004]LDSRC4 SR01 0x0024--><uint8 value="3"/><uint8 value="1"/><uint16 value="36"/>
<!--[0005]LTS32 SR01 SR00 SR01--><uint8 value="15"/><uint8 value="1"/><uint8 value="0"/><uint8 value="1"/>
<!--[0006]LDSRC4 SR02 0x0004--><uint8 value="3"/><uint8 value="2"/><uint16 value="4"/>
<!--[0007]LTS32 SR02 SR02 SR00--><uint8 value="15"/><uint8 value="2"/><uint8 value="2"/><uint8 value="0"/>
<!--[0008]JMPPOS SR02 +00003--><uint8 value="29"/><uint8 value="2"/><sint16 value="3"/>
<!--[0009]LDSRC4 SR02 0x0024--><uint8 value="3"/><uint8 value="2"/><uint16 value="36"/>
<!--[000A]LES32 SR02 SR02 SR00--><uint8 value="16"/><uint8 value="2"/><uint8 value="2"/><uint8 value="0"/>
<!--[000B]FLEAVE 0x03--><uint8 value="32"/><uint8 value="3"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.While())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.While()"/>
<!--name--><string_ref value="While"/>
<reference label_name="LabelOpCode:App.EntryPoint.While()"/>
<!--BCOpCode(App.EntryPoint.While())-80bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.While()"/>
<!--[0000]FENTER 0x02 0x00--><uint8 value="31"/><uint8 value="2"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0004--><uint8 value="3"/><uint8 value="0"/><uint16 value="4"/>
<!--[0002]LDSRC4 SR01 0x0024--><uint8 value="3"/><uint8 value="1"/><uint16 value="36"/>
<!--[0003]LTS32 SR01 SR00 SR01--><uint8 value="15"/><uint8 value="1"/><uint8 value="0"/><uint8 value="1"/>
<!--[0004]JMPNEG SR01 +00003--><uint8 value="30"/><uint8 value="1"/><sint16 value="3"/>
<!--[0005]INCI32 SR00--><uint8 value="12"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0006]JMP -00004--><uint8 value="28"/><uint8 value="255"/><sint16 value="-4"/>
<!--[0007]LDSRC4 SR01 0x0024--><uint8 value="3"/><uint8 value="1"/><uint16 value="36"/>
<!--[0008]LTS32 SR01 SR00 SR01--><uint8 value="15"/><uint8 value="1"/><uint8 value="0"/><uint8 value="1"/>
<!--[0009]JMPNEG SR01 +00005--><uint8 value="30"/><uint8 value="1"/><sint16 value="5"/>
<!--[000A]LDSRC4 SR01 0x0000--><uint8 value="3"/><uint8 value="1"/><uint16 value="0"/>
<!--[000B]ADDI32 SR00 SR00 SR01--><uint8 value="7"/><uint8 value="0"/><uint8 value="0"/><uint8 value="1"/>
<!--[000C]JMP -00005--><uint8 value="28"/><uint8 value="255"/><sint16 value="-5"/>
<!--[000D]JMP -00006--><uint8 value="28"/><uint8 value="255"/><sint16 value="-6"/>
<!--[000E]LDSRC4 SR01 0x0024--><uint8 value="3"/><uint8 value="1"/><uint16 value="36"/>
<!--[000F]LTS32 SR01 SR00 SR01--><uint8 value="15"/><uint8 value="1"/><uint8 value="0"/><uint8 value="1"/>
<!--[0010]JMPNEG SR01 +00003--><uint8 value="30"/><uint8 value="1"/><sint16 value="3"/>
<!--[0011]JMP +00002--><uint8 value="28"/><uint8 value="255"/><sint16 value="2"/>
<!--[0012]JMP -00004--><uint8 value="28"/><uint8 value="255"/><sint16 value="-4"/>
<!--[0013]FLEAVE 0x02--><uint8 value="32"/><uint8 value="2"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.If())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.If()"/>
<!--name--><string_ref value="If"/>
<reference label_name="LabelOpCode:App.EntryPoint.If()"/>
<!--BCOpCode(App.EntryPoint.If())-60bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.If()"/>
<!--[0000]FENTER 0x04 0x02--><uint8 value="31"/><uint8 value="4"/><uint8 value="2"/><uint8 value="255"/>
<!--[0001]LDSRZR SR02--><uint8 value="1"/><uint8 value="2"/><uint16 value="65535"/>
<!--[0002]EQI32 SR03 SR00 SR01--><uint8 value="17"/><uint8 value="3"/><uint8 value="0"/><uint8 value="1"/>
<!--[0003]JMPNEG SR03 +00003--><uint8 value="30"/><uint8 value="3"/><sint16 value="3"/>
<!--[0004]LDSRC4 SR02 0x0004--><uint8 value="3"/><uint8 value="2"/><uint16 value="4"/>
<!--[0005]JMP +00009--><uint8 value="28"/><uint8 value="255"/><sint16 value="9"/>
<!--[0006]LTS32 SR03 SR00 SR01--><uint8 value="15"/><uint8 value="3"/><uint8 value="0"/><uint8 value="1"/>
<!--[0007]JMPNEG SR03 +00004--><uint8 value="30"/><uint8 value="3"/><sint16 value="4"/>
<!--[0008]LDSRC4 SR03 0x0000--><uint8 value="3"/><uint8 value="3"/><uint16 value="0"/>
<!--[0009]NEGS32 SR02 SR03--><uint8 value="14"/><uint8 value="2"/><uint8 value="3"/><uint8 value="255"/>
<!--[000A]JMP +00004--><uint8 value="28"/><uint8 value="255"/><sint16 value="4"/>
<!--[000B]LTS32 SR03 SR01 SR00--><uint8 value="15"/><uint8 value="3"/><uint8 value="1"/><uint8 value="0"/>
<!--[000C]JMPNEG SR03 +00002--><uint8 value="30"/><uint8 value="3"/><sint16 value="2"/>
<!--[000D]LDSRC4 SR02 0x0000--><uint8 value="3"/><uint8 value="2"/><uint16 value="0"/>
<!--[000E]FLEAVE 0x04--><uint8 value="32"/><uint8 value="4"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.DoWhile())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.DoWhile()"/>
<!--name--><string_ref value="DoWhile"/>
<reference label_name="LabelOpCode:App.EntryPoint.DoWhile()"/>
<!--BCOpCode(App.EntryPoint.DoWhile())-56bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.DoWhile()"/>
<!--[0000]FENTER 0x03 0x01--><uint8 value="31"/><uint8 value="3"/><uint8 value="1"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR01 0x0000--><uint8 value="3"/><uint8 value="1"/><uint16 value="0"/>
<!--[0002]ADDI32 SR01 SR01 SR01--><uint8 value="7"/><uint8 value="1"/><uint8 value="1"/><uint8 value="1"/>
<!--[0003]LDSRC4 SR02 0x0014--><uint8 value="3"/><uint8 value="2"/><uint16 value="20"/>
<!--[0004]EQI32 SR02 SR01 SR02--><uint8 value="17"/><uint8 value="2"/><uint8 value="1"/><uint8 value="2"/>
<!--[0005]JMPNEG SR02 +00002--><uint8 value="30"/><uint8 value="2"/><sint16 value="2"/>
<!--[0006]JMP +00007--><uint8 value="28"/><uint8 value="255"/><sint16 value="7"/>
<!--[0007]LDSRC4 SR02 0x0018--><uint8 value="3"/><uint8 value="2"/><uint16 value="24"/>
<!--[0008]EQI32 SR02 SR01 SR02--><uint8 value="17"/><uint8 value="2"/><uint8 value="1"/><uint8 value="2"/>
<!--[0009]JMPNEG SR02 +00002--><uint8 value="30"/><uint8 value="2"/><sint16 value="2"/>
<!--[000A]JMP +00001--><uint8 value="28"/><uint8 value="255"/><sint16 value="1"/>
<!--[000B]LTS32 SR02 SR01 SR00--><uint8 value="15"/><uint8 value="2"/><uint8 value="1"/><uint8 value="0"/>
<!--[000C]JMPPOS SR02 -00010--><uint8 value="29"/><uint8 value="2"/><sint16 value="-10"/>
<!--[000D]FLEAVE 0x03--><uint8 value="32"/><uint8 value="3"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.For())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.For()"/>
<!--name--><string_ref value="For"/>
<reference label_name="LabelOpCode:App.EntryPoint.For()"/>
<!--BCOpCode(App.EntryPoint.For())-72bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.For()"/>
<!--[0000]FENTER 0x03 0x00--><uint8 value="31"/><uint8 value="3"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0004--><uint8 value="3"/><uint8 value="0"/><uint16 value="4"/>
<!--[0002]JMP +00002--><uint8 value="28"/><uint8 value="255"/><sint16 value="2"/>
<!--[0003]INCI32 SR00--><uint8 value="12"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0004]LDSRC4 SR01 0x0024--><uint8 value="3"/><uint8 value="1"/><uint16 value="36"/>
<!--[0005]LTS32 SR01 SR00 SR01--><uint8 value="15"/><uint8 value="1"/><uint8 value="0"/><uint8 value="1"/>
<!--[0006]JMPNEG SR01 +00011--><uint8 value="30"/><uint8 value="1"/><sint16 value="11"/>
<!--[0007]LDSRC4 SR01 0x0004--><uint8 value="3"/><uint8 value="1"/><uint16 value="4"/>
<!--[0008]JMP +00002--><uint8 value="28"/><uint8 value="255"/><sint16 value="2"/>
<!--[0009]INCI32 SR01--><uint8 value="12"/><uint8 value="1"/><uint16 value="65535"/>
<!--[000A]LDSRC4 SR02 0x0024--><uint8 value="3"/><uint8 value="2"/><uint16 value="36"/>
<!--[000B]LTS32 SR02 SR01 SR02--><uint8 value="15"/><uint8 value="2"/><uint8 value="1"/><uint8 value="2"/>
<!--[000C]JMPNEG SR02 +00003--><uint8 value="30"/><uint8 value="2"/><sint16 value="3"/>
<!--[000D]JMP +00002--><uint8 value="28"/><uint8 value="255"/><sint16 value="2"/>
<!--[000E]JMP -00005--><uint8 value="28"/><uint8 value="255"/><sint16 value="-5"/>
<!--[000F]JMP -00012--><uint8 value="28"/><uint8 value="255"/><sint16 value="-12"/>
<!--[0010]JMP -00013--><uint8 value="28"/><uint8 value="255"/><sint16 value="-13"/>
<!--[0011]FLEAVE 0x03--><uint8 value="32"/><uint8 value="3"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.ReturnNoType())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.ReturnNoType()"/>
<!--name--><string_ref value="ReturnNoType"/>
<reference label_name="LabelOpCode:App.EntryPoint.ReturnNoType()"/>
<!--BCOpCode(App.EntryPoint.ReturnNoType())-12bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.ReturnNoType()"/>
<!--[0000]FENTER 0x00 0x00--><uint8 value="31"/><uint8 value="0"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]JMP +00001--><uint8 value="28"/><uint8 value="255"/><sint16 value="1"/>
<!--[0002]FLEAVE 0x00--><uint8 value="32"/><uint8 value="0"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.ReturnBool())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.ReturnBool()"/>
<!--name--><string_ref value="ReturnBool"/>
<reference label_name="LabelOpCode:App.EntryPoint.ReturnBool()"/>
<!--BCOpCode(App.EntryPoint.ReturnBool())-44bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.ReturnBool()"/>
<!--[0000]FENTER 0x04 0x02--><uint8 value="31"/><uint8 value="4"/><uint8 value="2"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR02 0x0008--><uint8 value="3"/><uint8 value="2"/><uint16 value="8"/>
<!--[0002]MODS32 SR02 SR01 SR02--><uint8 value="11"/><uint8 value="2"/><uint8 value="1"/><uint8 value="2"/>
<!--[0003]LDSRC4 SR03 0x0004--><uint8 value="3"/><uint8 value="3"/><uint16 value="4"/>
<!--[0004]EQI32 SR02 SR02 SR03--><uint8 value="17"/><uint8 value="2"/><uint8 value="2"/><uint8 value="3"/>
<!--[0005]JMPNEG SR02 +00003--><uint8 value="30"/><uint8 value="2"/><sint16 value="3"/>
<!--[0006]LDSRBT SR00--><uint8 value="2"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0007]JMP +00003--><uint8 value="28"/><uint8 value="255"/><sint16 value="3"/>
<!--[0008]LDSRZR SR00--><uint8 value="1"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0009]JMP +00001--><uint8 value="28"/><uint8 value="255"/><sint16 value="1"/>
<!--[000A]FLEAVE 0x04--><uint8 value="32"/><uint8 value="4"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.FuncVoidNoArg())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.FuncVoidNoArg()"/>
<!--name--><string_ref value="FuncVoidNoArg"/>
<reference label_name="LabelOpCode:App.EntryPoint.FuncVoidNoArg()"/>
<!--BCOpCode(App.EntryPoint.FuncVoidNoArg())-8bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.FuncVoidNoArg()"/>
<!--[0000]FENTER 0x00 0x00--><uint8 value="31"/><uint8 value="0"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]FLEAVE 0x00--><uint8 value="32"/><uint8 value="0"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.CallFuncVoidNoArg())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.CallFuncVoidNoArg()"/>
<!--name--><string_ref value="CallFuncVoidNoArg"/>
<reference label_name="LabelOpCode:App.EntryPoint.CallFuncVoidNoArg()"/>
<!--BCOpCode(App.EntryPoint.CallFuncVoidNoArg())-12bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.CallFuncVoidNoArg()"/>
<!--[0000]FENTER 0x00 0x00--><uint8 value="31"/><uint8 value="0"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]CALL App.EntryPoint.FuncVoidNoArg()--><uint8 value="33"/><uint8 value="255"/><uint16 value="0"/>
<!--[0002]FLEAVE 0x00--><uint8 value="32"/><uint8 value="0"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.FuncIntNoArg())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.FuncIntNoArg()"/>
<!--name--><string_ref value="FuncIntNoArg"/>
<reference label_name="LabelOpCode:App.EntryPoint.FuncIntNoArg()"/>
<!--BCOpCode(App.EntryPoint.FuncIntNoArg())-16bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.FuncIntNoArg()"/>
<!--[0000]FENTER 0x01 0x01--><uint8 value="31"/><uint8 value="1"/><uint8 value="1"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0000--><uint8 value="3"/><uint8 value="0"/><uint16 value="0"/>
<!--[0002]JMP +00001--><uint8 value="28"/><uint8 value="255"/><sint16 value="1"/>
<!--[0003]FLEAVE 0x01--><uint8 value="32"/><uint8 value="1"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.CallFuncIntNoArg())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.CallFuncIntNoArg()"/>
<!--name--><string_ref value="CallFuncIntNoArg"/>
<reference label_name="LabelOpCode:App.EntryPoint.CallFuncIntNoArg()"/>
<!--BCOpCode(App.EntryPoint.CallFuncIntNoArg())-16bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.CallFuncIntNoArg()"/>
<!--[0000]FENTER 0x01 0x00--><uint8 value="31"/><uint8 value="1"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]CALL App.EntryPoint.FuncIntNoArg()--><uint8 value="33"/><uint8 value="255"/><uint16 value="1"/>
<!--[0002]LDSRFZ SR00--><uint8 value="5"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0003]FLEAVE 0x01--><uint8 value="32"/><uint8 value="1"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.FuncIntWithArg())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.FuncIntWithArg()"/>
<!--name--><string_ref value="FuncIntWithArg"/>
<reference label_name="LabelOpCode:App.EntryPoint.FuncIntWithArg()"/>
<!--BCOpCode(App.EntryPoint.FuncIntWithArg())-20bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.FuncIntWithArg()"/>
<!--[0000]FENTER 0x02 0x02--><uint8 value="31"/><uint8 value="2"/><uint8 value="2"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR00 0x0000--><uint8 value="3"/><uint8 value="0"/><uint16 value="0"/>
<!--[0002]ADDI32 SR00 SR01 SR00--><uint8 value="7"/><uint8 value="0"/><uint8 value="1"/><uint8 value="0"/>
<!--[0003]JMP +00001--><uint8 value="28"/><uint8 value="255"/><sint16 value="1"/>
<!--[0004]FLEAVE 0x02--><uint8 value="32"/><uint8 value="2"/><uint16 value="65535"/>
<!--BCFunction(App.EntryPoint.CallFuncIntWithArg())-->
<align value="4"/>
<label name="LabelFunction:App.EntryPoint.CallFuncIntWithArg()"/>
<!--name--><string_ref value="CallFuncIntWithArg"/>
<reference label_name="LabelOpCode:App.EntryPoint.CallFuncIntWithArg()"/>
<!--BCOpCode(App.EntryPoint.CallFuncIntWithArg())-24bytes-->
<align value="4"/>
<label name="LabelOpCode:App.EntryPoint.CallFuncIntWithArg()"/>
<!--[0000]FENTER 0x02 0x00--><uint8 value="31"/><uint8 value="2"/><uint8 value="0"/><uint8 value="255"/>
<!--[0001]LDSRC4 SR01 0x0000--><uint8 value="3"/><uint8 value="1"/><uint16 value="0"/>
<!--[0002]LDFRSR FR01 SR01--><uint8 value="6"/><uint8 value="1"/><uint8 value="1"/><uint8 value="255"/>
<!--[0003]CALL App.EntryPoint.FuncIntWithArg()--><uint8 value="33"/><uint8 value="255"/><uint16 value="2"/>
<!--[0004]LDSRFZ SR00--><uint8 value="5"/><uint8 value="0"/><uint16 value="65535"/>
<!--[0005]FLEAVE 0x02--><uint8 value="32"/><uint8 value="2"/><uint16 value="65535"/>
</xdata_root>
}}
* 仕様変更履歴 [#a0f3a6ff]
:2010/08/08|
- 変更点が多すぎて履歴を保守していくのが大変になってきた・・・。svnのログでも貼り付けようかしら。
:2010/08/06|
- VM
-- 命令コード,ゼロ代入とtrue代入を追加。
:2010/08/05|
- VM
-- 命令コード,比較演算を追加。
:2010/08/04|
- Language
-- ver1.0ではint32,uint32,float32に絞る。
-- 8bit,16bit,64bitの数値はサポートしない。
:2010/08/03|
- VM
-- 最大引数の仕様を変更(voidな戻り値の関数は+1)
:2010/07/31|
- Shiba Language
- Language
-- インターフェースの委譲を削除。
-- 固定長配列をver2.0に変更。
-- publicメンバ変数のラッパー関数仕様を削除。オフセット位置をリンク時に計算する仕様に変更。
-- invariantの実装をver2.0に変更。