Index: trunk/abdev/BasicCompiler32/Compile_Func.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 357)
+++ trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 358)
@@ -20,4 +20,5 @@
 	if( lstrcmpi( FuncName, "_System_GetNowScopeCatchAddresses" ) == 0 )return FUNC_SYSTEM_GET_NOW_SCOPE_CATCH_ADDRESS;
 	if( lstrcmpi( FuncName, "_System_GetBp" ) == 0 )	return FUNC_SYSTEM_GET_BP;
+	if( lstrcmpi( FuncName, "_System_GetSp" ) == 0 )	return FUNC_SYSTEM_GET_SP;
 	if( lstrcmpi( FuncName, "GetDouble" ) == 0 )		return FUNC_GETDOUBLE;
 	if( lstrcmpi( FuncName, "GetSingle" ) == 0 )		return FUNC_GETSINGLE;
@@ -582,4 +583,9 @@
 	compiler.codeGenerator.op_mov_RR(REG_EAX,REG_EBP);
 }
+void Opcode_Func_System_Get_Sp()
+{
+	//mov eax,esp
+	compiler.codeGenerator.op_mov_RR(REG_EAX,REG_ESP);
+}
 
 void Opcode_Func_GetPtrData(const char *Parameter,const int type){
@@ -679,5 +685,5 @@
 		case FUNC_SYSTEM_GET_NOW_SCOPE_CATCH_ADDRESS:
 			if( isCallOn ) Exception::Opcode_Func_System_GetNowScopeCatchAddress();
-			resultType.SetBasicType( DEF_LONG );
+			resultType.SetBasicType( DEF_PTR_VOID );
 			break;
 		case FUNC_SYSTEM_GET_BP:
@@ -685,4 +691,8 @@
 			resultType.SetBasicType( DEF_LONG );
 			break;
+		case FUNC_SYSTEM_GET_SP:
+			if( isCallOn ) Opcode_Func_System_Get_Sp();
+			resultType.SetBasicType( DEF_LONG );
+			break;
 
 		case FUNC_GETDOUBLE:
Index: trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 357)
+++ trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 358)
@@ -100,14 +100,4 @@
 		UserProc::CompileStartForUserProc( pBackUserProc );
 
-
-		//ret
-		compiler.codeGenerator.op_ret();
-	}
-	else if( userProc.GetName() == "_System_GetSp" ){
-		//mov eax,esp
-		compiler.codeGenerator.op_mov_RR(REG_EAX,REG_ESP);
-
-		//add eax,PTR_SIZE
-		compiler.codeGenerator.op_add_RV8(REG_EAX,PTR_SIZE);
 
 		//ret
Index: trunk/abdev/BasicCompiler32/FunctionValue.h
===================================================================
--- trunk/abdev/BasicCompiler32/FunctionValue.h	(revision 357)
+++ trunk/abdev/BasicCompiler32/FunctionValue.h	(revision 358)
@@ -19,4 +19,5 @@
 #define FUNC_SYSTEM_GET_NOW_SCOPE_CATCH_ADDRESS	0x0623
 #define FUNC_SYSTEM_GET_BP	0x0624
+#define FUNC_SYSTEM_GET_SP	0x0625
 
 //ポインタ
Index: trunk/abdev/BasicCompiler32/MakePeHdr.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/MakePeHdr.cpp	(revision 357)
+++ trunk/abdev/BasicCompiler32/MakePeHdr.cpp	(revision 358)
@@ -33,5 +33,4 @@
 	*pSub_System_Call_Destructor_of_GlobalObject,
 	*pSub_System_End,
-	*pSub_System_GetSp,
 	*pSub_pow,
 	*pSub_calloc,
@@ -252,9 +251,4 @@
 	if(pSub_System_End=GetSubHash("_System_End",1)){
 		pSub_System_End->Using();
-	}
-
-	if(pSub_System_GetSp=GetSubHash("_System_GetSp",1)){
-		pSub_System_GetSp->Using();
-		pSub_System_GetSp->ThisIsSystemProc();
 	}
 
