Index: BasicCompiler64/Opcode.h
===================================================================
--- BasicCompiler64/Opcode.h	(revision 62)
+++ BasicCompiler64/Opcode.h	(revision 64)
@@ -125,4 +125,6 @@
 	void SetLocalParmSize(int size);
 	int GetFrameSize();
+	int GetNowSp();
+	void mov_sp( int reg );
 	int push(int reg);
 	void push(int xmm_reg,int var_size);
@@ -130,5 +132,5 @@
 	void ref(int reg);
 	void ref(int xmm_reg,int var_size);
-	void pop(int reg);
+	void pop(int reg = REG_NON);
 	void pop(int xmm_reg,int var_size);
 	void parameter_allocate(int size);
@@ -247,5 +249,4 @@
 void SetVariableFromRax(int VarType,int CalcType,RELATIVE_VAR *pRelativeVar);
 void OpcodeCalc(char *Command);
-void SetRefVariable( const char *varname, const char *expression );
 
 //NumOpe.cpp
@@ -285,7 +286,6 @@
 //Compile_Set_Var.cpp
 BOOL IsUse_r11(RELATIVE_VAR *pRelativeVar);
-void SetObjectVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap);
-void SetDoubleVariable(int type,RELATIVE_VAR *pRelative);
-void SetSingleVariable(int type,RELATIVE_VAR *pRelative);
+void SetStructVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap);
+void SetRealVariable(int VarType, int CalcType, RELATIVE_VAR *pRelativeVar);
 void SetBooleanVariable(int type,RELATIVE_VAR *pRelative);
 void SetWholeVariable(int var_size,int type,RELATIVE_VAR *pRelative);
@@ -307,6 +307,7 @@
 
 //Compile_Object.cpp
-int Operator_New(const char *Parameter,LONG_PTR *plpIndex);
-void OpcodeDelete(const char *Parameter);
+void Operator_New( CClass &classObj, const char *objectSizeStr, const char *parameter,const TYPEINFO &baseTypeInfo );
+int Operator_New(const char *Parameter,LONG_PTR *plpIndex,const TYPEINFO &baseTypeInfo );
+void OpcodeDelete(const char *Parameter, bool isSweeping);
 
 //Compile_Var.cpp
@@ -319,8 +320,12 @@
 #define DIMFLAG_STATIC					0x04
 #define DIMFLAG_CONST					0x08
+void dim(bool isRef, char *VarName,int *SubScripts,TYPEINFO &TypeInfo,int TypeSize,char *InitBuf,char *ConstractParameter,DWORD dwFlags);
 void OpcodeDim(char *Parameter,DWORD dwFlag);
 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar);
 
 //CParameter.cpp
+#define OVERLOAD_MIN_LEVEL 0
+#define OVERLOAD_MAX_LEVEL 3
+#define OVERLOAD_LEVEL0 0
 #define OVERLOAD_LEVEL1 1
 #define OVERLOAD_LEVEL2 2
@@ -352,8 +357,8 @@
 	BOOL ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum);
 	void MacroParameterSupport(PARAMETER_INFO *ppi);
-	void SetObjectParameter(int reg,CClass *pobj_Class,LPSTR Parameter);
+	void SetStructParameter(int reg,CClass *pobj_Class,LPSTR Parameter);
 
 	//一時オブジェクトパラメータの生成と破棄
-	void NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum );
+	int NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum );
 	void DeleteTempParameters();
 
@@ -380,5 +385,5 @@
 #define PROCFLAG_NEW	1
 int Opcode_CallProcPtr(char *variable,char *Parameter,PROCPTRINFO *pi,LONG_PTR *plpIndex);
-void Opcode_CallProc(char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType);
+void Opcode_CallProc(const char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType);
 int Opcode_CallDllProc(char *Parameter,DECLAREINFO *pdi,LONG_PTR *plpIndex);
 
@@ -410,6 +415,6 @@
 void OpcodeGosub(char *Parameter);
 void OpcodeReturn(char *Parameter);
-void Opcode_Input(char *Parameter);
-void Opcode_Print(char *Parameter,BOOL bWrite);
+void Opcode_Input(const char *Parameter);
+void Opcode_Print(const char *Parameter,BOOL bWrite);
 void OpcodeCallPtr(char *Parameter);
 void OpcodeSetPtrData(char *Parameter,int type);
@@ -450,5 +455,4 @@
 void op_mov64_ToReg				(int reg,_int64 i64data);
 void op_mov64_ToReg				(int reg,int i32data);
-void op_mov64_ToReg_FromReg		(int reg1,int reg2);
 void op_movsxd					(int reg64,int reg32);
 void op_movsx64_FromReg16		(int reg64,int reg16);
@@ -460,5 +464,5 @@
 void op_dec						(int reg);
 void op_add_RM					(int op_size,int reg,int base_reg,int offset,char mod);
-void op_add64_value				(int reg,int offset);
+void op_add_RV				(int reg,int offset);
 void op_add64_reg				(int reg1,int reg2);
 void op_add32_reg				(int reg1,int reg2);
@@ -467,6 +471,6 @@
 void op_sub32_reg				(int reg1,int reg2);
 void op_sbb_RR					( int op_size, int reg1, int reg2 );
-void op_imul_reg				(int op_size,int reg1,int reg2);
-void op_imul_value				(int op_size,int reg,int i32data);
+void op_imul_RR				(int op_size,int reg1,int reg2);
+void op_imul_RV				(int op_size,int reg,int i32data);
 void op_div64_reg				(int reg);
 void op_idiv64_reg				(int reg);
