Index: /trunk/abdev/BasicCompiler32/Compile_Func.cpp
===================================================================
--- /trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 425)
+++ /trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 426)
@@ -22,4 +22,5 @@
 	if( lstrcmpi( FuncName, "_System_GetBp" ) == 0 )	return FUNC_SYSTEM_GET_BP;
 	if( lstrcmpi( FuncName, "_System_GetSp" ) == 0 )	return FUNC_SYSTEM_GET_SP;
+	if( lstrcmp( FuncName, "_System_New" ) == 0 )		return FUNC_SYSTEM_NEW;
 	if( lstrcmpi( FuncName, "GetDouble" ) == 0 )		return FUNC_GETDOUBLE;
 	if( lstrcmpi( FuncName, "GetSingle" ) == 0 )		return FUNC_GETSINGLE;
@@ -606,4 +607,35 @@
 }
 
+void Opcode_Func_System_New( const char *parameter, Type &resultType, bool isCallOn )
+{
+	if( !compiler.StringToType( parameter, resultType ) )
+	{
+		SetError();
+		return;
+	}
+	if( !resultType.IsObject() )
+	{
+		SetError();
+		return;
+	}
+
+	if( isCallOn )
+	{
+		Type tempResultType;
+		if( !Operator_New( parameter, resultType, tempResultType ) )
+		{
+			return;
+		}
+
+		if( !resultType.Equals( tempResultType ) )
+		{
+			SetError();
+		}
+
+		//pop eax
+		compiler.codeGenerator.op_pop( REG_EAX );
+	}
+}
+
 void Opcode_Func_GetPtrData(const char *Parameter,const int type){
 	Type tempType;
@@ -716,4 +748,7 @@
 			resultType.SetBasicType( DEF_LONG );
 			break;
+		case FUNC_SYSTEM_NEW:
+			Opcode_Func_System_New( Parameter, resultType, isCallOn );
+			break;
 
 		case FUNC_GETDOUBLE:
Index: /trunk/abdev/BasicCompiler32/FunctionValue.h
===================================================================
--- /trunk/abdev/BasicCompiler32/FunctionValue.h	(revision 425)
+++ /trunk/abdev/BasicCompiler32/FunctionValue.h	(revision 426)
@@ -21,4 +21,5 @@
 #define FUNC_SYSTEM_GET_BP	0x0625
 #define FUNC_SYSTEM_GET_SP	0x0626
+#define FUNC_SYSTEM_NEW		0x0627
 
 //ポインタ
