Index: trunk/abdev/BasicCompiler32/BasicCompiler.vcproj
===================================================================
--- trunk/abdev/BasicCompiler32/BasicCompiler.vcproj	(revision 231)
+++ trunk/abdev/BasicCompiler32/BasicCompiler.vcproj	(revision 232)
@@ -1308,4 +1308,8 @@
 				</File>
 				<File
+					RelativePath="..\BasicCompiler_Common\src\NativeCode.cpp"
+					>
+				</File>
+				<File
 					RelativePath="..\BasicCompiler_Common\src\Procedure.cpp"
 					>
Index: trunk/abdev/BasicCompiler64/BasicCompiler.vcproj
===================================================================
--- trunk/abdev/BasicCompiler64/BasicCompiler.vcproj	(revision 231)
+++ trunk/abdev/BasicCompiler64/BasicCompiler.vcproj	(revision 232)
@@ -1117,4 +1117,8 @@
 				</File>
 				<File
+					RelativePath="..\BasicCompiler_Common\src\NativeCode.cpp"
+					>
+				</File>
+				<File
 					RelativePath="..\BasicCompiler_Common\src\Procedure.cpp"
 					>
Index: trunk/abdev/BasicCompiler64/CodeGenerator.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/CodeGenerator.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/CodeGenerator.cpp	(revision 232)
@@ -160,5 +160,5 @@
 ///////////////////
 
-void CodeGenerator::op_mov_RV(int op_size,int reg,long i32data){
+void CodeGenerator::op_mov_RV(int op_size,int reg,long i32data, Schedule::Type scheduleType ){
 	//mov reg,i32data
 
@@ -179,5 +179,5 @@
 
 	//即値
-	pNativeCode->Put( i32data );
+	pNativeCode->Put( i32data, scheduleType );
 }
 void CodeGenerator::op_mov_RV64(int reg,_int64 i64data){
@@ -258,5 +258,5 @@
 	}
 }
-void CodeGenerator::op_mov_MR(int op_size,int reg,int base_reg,long offset,char mod){
+void CodeGenerator::op_mov_MR(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType ){
 	//mov qword ptr[base_reg+offset],reg64
 	//mov dword ptr[base_reg+offset],reg32
@@ -273,7 +273,7 @@
 	else opcode=(char)0x89;
 
-	__op_format(op_size,op_prefix,opcode,0,reg,base_reg,offset,mod);
-}
-void CodeGenerator::op_mov_MR_ex(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset){
+	__op_format(op_size,op_prefix,opcode,0,reg,base_reg,offset,mod, scheduleType );
+}
+void CodeGenerator::op_mov_MR_ex(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType ){
 	//mov qword ptr[base_reg1+base_reg2+offset],reg64
 	//mov dword ptr[base_reg1+base_reg2+offset],reg32
@@ -309,5 +309,5 @@
 
 		//オフセット値
-		pNativeCode->Put( offset );
+		pNativeCode->Put( offset, scheduleType );
 	}
 	else{
@@ -389,48 +389,4 @@
 }
 
-
-
-///////////////////
-// mov64関連
-///////////////////
-
-void CodeGenerator::op_mov64_ToReg(int reg,_int64 i64data){
-	//mov reg,i64data
-
-	if(REG_RAX<=reg&&reg<=REG_RDI){
-		/*	rax～rdi
-			0100 1000 1011 1xxx [64bit data]	*/
-		pNativeCode->Put( (char)0x48 );
-		pNativeCode->Put( (char)(0xB8| REGISTER_OPERAND(reg) ) );
-		pNativeCode->Put( i64data );
-	}
-	if(REG_R8<=reg&&reg<=REG_R15){
-		/*	r8～r15
-			0100 1001 1011 1xxx [64bit data]	*/
-		pNativeCode->Put( (char)0x49 );
-		pNativeCode->Put( (char)(0xB8| REGISTER_OPERAND(reg) ) );
-		pNativeCode->Put( i64data );
-	}
-}
-void CodeGenerator::op_mov64_ToReg(int reg,long i32data){
-	//mov reg,i32data
-
-	if(REG_RAX<=reg&&reg<=REG_RDI){
-		/*	rax～rdi
-			0100 1000 1100 0111 1100 0xxx [32bit data]	*/
-		pNativeCode->Put( (char)0x48 );
-		pNativeCode->Put( (char)0xC7 );
-		pNativeCode->Put( (char)(0xC0| REGISTER_OPERAND(reg) ) );
-		pNativeCode->Put( i32data );
-	}
-	if(REG_R8<=reg&&reg<=REG_R15){
-		/*	r8～r15
-			0100 1001 1100 0111 1100 0xxx [32bit data]	*/
-		pNativeCode->Put( (char)0x49 );
-		pNativeCode->Put( (char)0xC7 );
-		pNativeCode->Put( (char)(0xC0| REGISTER_OPERAND(reg) ) );
-		pNativeCode->Put( i32data );
-	}
-}
 void CodeGenerator::op_movsxd(int reg64,int reg32){
 	//movsxd reg64,reg32
@@ -641,5 +597,5 @@
 }
 
-void CodeGenerator::op_add_RV(int reg,long offset){
+void CodeGenerator::op_add_RV(int reg,long offset, Schedule::Type scheduleType ){
 	//add reg,offset
 	char RexByte=-1;
@@ -656,5 +612,5 @@
 		pNativeCode->Put( (char)RexByte );
 		pNativeCode->Put( (char)0x05 );
-		pNativeCode->Put( offset );
+		pNativeCode->Put( offset, scheduleType );
 	}
 	else{
@@ -665,5 +621,5 @@
 		pNativeCode->Put( (char)0x81 );
 		pNativeCode->Put( (char)(0xC0| REGISTER_OPERAND(reg)) );
-		pNativeCode->Put( offset );
+		pNativeCode->Put( offset, scheduleType );
 	}
 }
@@ -1365,11 +1321,11 @@
 ////////////////////
 
-void CodeGenerator::op_movlpd_MR(int xmm_reg,int base_reg,int offset,char mod){
+void CodeGenerator::op_movlpd_MR(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType ){
 	//movlpd qword ptr[base_reg+offset],xmm_reg
-	__op_format(0,(char)0x66,(char)0x0F,(char)0x13,xmm_reg,base_reg,offset,mod);
-}
-void CodeGenerator::op_movlpd_RM(int xmm_reg,int base_reg,int offset,char mod){
+	__op_format(0,(char)0x66,(char)0x0F,(char)0x13,xmm_reg,base_reg,offset,mod, scheduleType );
+}
+void CodeGenerator::op_movlpd_RM(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType ){
 	//movlpd xmm_reg,qword ptr[base_reg+offset]
-	__op_format(0,(char)0x66,(char)0x0F,(char)0x12,xmm_reg,base_reg,offset,mod);
+	__op_format(0,(char)0x66,(char)0x0F,(char)0x12,xmm_reg,base_reg,offset,mod, scheduleType );
 }
 void CodeGenerator::op_movsd_RR(int xmm_reg1,int xmm_reg2){
@@ -1379,8 +1335,8 @@
 	__op_format(0,(char)0xF2,(char)0x0F,(char)0x10,xmm_reg1,xmm_reg2,0,MOD_REG);
 }
-void CodeGenerator::op_movsd_MR(int xmm_reg,int base_reg,int offset,char mod){
+void CodeGenerator::op_movsd_MR(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType ){
 	//movsd qword ptr[reg+offset],xmm_reg
 	//movsd qword ptr[reg],xmm_reg
-	__op_format(0,(char)0xF2,(char)0x0F,(char)0x11,xmm_reg,base_reg,offset,mod);
+	__op_format(0,(char)0xF2,(char)0x0F,(char)0x11,xmm_reg,base_reg,offset,mod, scheduleType );
 }
 void CodeGenerator::op_movss_RR(int xmm_reg1,int xmm_reg2){
@@ -1390,12 +1346,12 @@
 	__op_format(0,(char)0xF3,(char)0x0F,(char)0x10,xmm_reg1,xmm_reg2,0,MOD_REG);
 }
-void CodeGenerator::op_movss_RM(int xmm_reg,int base_reg,int offset,char mod){
+void CodeGenerator::op_movss_RM(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType ){
 	//movss xmm_reg,dword ptr[base_reg+offset]
-	__op_format(0,(char)0xF3,(char)0x0F,(char)0x10,xmm_reg,base_reg,offset,mod);
-}
-void CodeGenerator::op_movss_MR(int xmm_reg,int base_reg,int offset,char mod){
+	__op_format(0,(char)0xF3,(char)0x0F,(char)0x10,xmm_reg,base_reg,offset,mod, scheduleType );
+}
+void CodeGenerator::op_movss_MR(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType ){
 	//movss dword ptr[reg+offset],xmm_reg
 	//movss dword ptr[reg],xmm_reg
-	__op_format(0,(char)0xF3,(char)0x0F,(char)0x11,xmm_reg,base_reg,offset,mod);
+	__op_format(0,(char)0xF3,(char)0x0F,(char)0x11,xmm_reg,base_reg,offset,mod, scheduleType );
 }
 
Index: trunk/abdev/BasicCompiler64/Compile_Calc_PushVar.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Calc_PushVar.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/Compile_Calc_PushVar.cpp	(revision 232)
@@ -11,23 +11,9 @@
 		if(pRelativeVar->bOffsetOffset){
 			//movlpd xmm_reg,qword ptr[r11+offset]
-			OpBuffer[obp++]=(char)0x66;
-			OpBuffer[obp++]=(char)0x41;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x12;
-			OpBuffer[obp++]=(char)(0x83 | REGISTER_OPERAND(xmm_reg)<<3);
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movlpd_RM( xmm_reg, REG_R11, (long)pRelativeVar->offset, MOD_BASE_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//movlpd xmm_reg,qword ptr[offset]
-			OpBuffer[obp++]=(char)0x66;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x12;
-			OpBuffer[obp++]=(char)(0x04 | REGISTER_OPERAND(xmm_reg)<<3);
-			OpBuffer[obp++]=(char)0x25;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movlpd_RM( xmm_reg, 0, (long)pRelativeVar->offset, MOD_DISP32, Schedule::GlobalVar );
 		}
 	}
@@ -50,12 +36,5 @@
 		else{
 			//movlpd xmm_reg,qword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0x66;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x12;
-			OpBuffer[obp++]=(char)(0x84 | REGISTER_OPERAND(xmm_reg)<<3);
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movlpd_RM( xmm_reg, REG_RSP, (long)pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
@@ -63,18 +42,9 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add r11,qword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x03;
-			OpBuffer[obp++]=(char)0x9C;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 
@@ -84,9 +54,5 @@
 directmem:
 		//movlpd xmm_reg,qword ptr[r11]
-		OpBuffer[obp++]=(char)0x66;
-		OpBuffer[obp++]=(char)0x41;
-		OpBuffer[obp++]=(char)0x0F;
-		OpBuffer[obp++]=(char)0x12;
-		OpBuffer[obp++]=(char)(0x03 | REGISTER_OPERAND(xmm_reg)<<3);
+		compiler.codeGenerator.op_movlpd_RM( xmm_reg, REG_R11, 0, MOD_BASE);
 	}
 }
@@ -95,23 +61,9 @@
 		if(pRelativeVar->bOffsetOffset){
 			//movss xmm_reg,dword ptr[r11+offset]
-			OpBuffer[obp++]=(char)0xF3;
-			OpBuffer[obp++]=(char)0x41;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x10;
-			OpBuffer[obp++]=(char)(0x83 | REGISTER_OPERAND(xmm_reg)<<3);
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movss_RM( xmm_reg, REG_R11, (long)pRelativeVar->offset, MOD_BASE_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//movss xmm_reg,dword ptr[offset]
-			OpBuffer[obp++]=(char)0xF3;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x10;
-			OpBuffer[obp++]=(char)(0x04 | REGISTER_OPERAND(xmm_reg)<<3);
-			OpBuffer[obp++]=(char)0x25;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movss_RM( xmm_reg, 0, (long)pRelativeVar->offset, MOD_BASE, Schedule::GlobalVar );
 		}
 	}
@@ -134,12 +86,5 @@
 		else{
 			//movss xmm_reg,dword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0xF3;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x10;
-			OpBuffer[obp++]=(char)(0x84 | REGISTER_OPERAND(xmm_reg)<<3);
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movss_RM( xmm_reg, REG_RSP, (long)pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
@@ -147,18 +92,9 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add r11,qword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x03;
-			OpBuffer[obp++]=(char)0x9C;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 
@@ -168,9 +104,5 @@
 directmem:
 		//movss xmm_reg,dword ptr[r11]
-		OpBuffer[obp++]=(char)0xF3;
-		OpBuffer[obp++]=(char)0x41;
-		OpBuffer[obp++]=(char)0x0F;
-		OpBuffer[obp++]=(char)0x10;
-		OpBuffer[obp++]=(char)(0x03 | REGISTER_OPERAND(xmm_reg)<<3);
+		compiler.codeGenerator.op_movss_RM( xmm_reg, REG_R11, 0, MOD_BASE);
 	}
 }
Index: trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp	(revision 232)
@@ -740,5 +740,5 @@
 	//ローカル変数領域のサイズをスタックフレームに通知
 	int localParmSize = AllLocalVarSize - BaseLocalVar;
-	int stackFrameSize = pobj_sf->GetFrameSize( AllLocalVarSize );
+	int stackFrameSize = pobj_sf->GetFrameSize( localParmSize );
 
 	//ローカル変数アドレススケジュール
Index: trunk/abdev/BasicCompiler64/Compile_Set_Var.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Set_Var.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/Compile_Set_Var.cpp	(revision 232)
@@ -105,23 +105,9 @@
 		if(pRelative->bOffsetOffset){
 			//movsd qword ptr[r11+offset],xmm0
-			OpBuffer[obp++]=(char)0xF2;
-			OpBuffer[obp++]=(char)0x41;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x11;
-			OpBuffer[obp++]=(char)0x83;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movsd_MR( REG_XMM0, REG_R11, (long)pRelative->offset, MOD_BASE_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//movsd qword ptr[offset],xmm0
-			OpBuffer[obp++]=(char)0xF2;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x11;
-			OpBuffer[obp++]=(char)0x04;
-			OpBuffer[obp++]=(char)0x25;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movsd_MR( REG_XMM0, 0, (long)pRelative->offset, MOD_DISP32, Schedule::GlobalVar );
 		}
 	}
@@ -144,12 +130,5 @@
 		else{
 			//movsd qword ptr[rsp+offset],xmm0
-			OpBuffer[obp++]=(char)0xF2;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x11;
-			OpBuffer[obp++]=(char)0x84;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movsd_MR( REG_XMM0, REG_RSP, (long)pRelative->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
@@ -157,18 +136,9 @@
 		if(pRelative->bOffsetOffset){
 			//add r11,qword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x03;
-			OpBuffer[obp++]=(char)0x9C;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 
@@ -192,23 +162,9 @@
 		if(pRelative->bOffsetOffset){
 			//movss dword ptr[r11+offset],xmm0
-			OpBuffer[obp++]=(char)0xF3;
-			OpBuffer[obp++]=(char)0x41;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x11;
-			OpBuffer[obp++]=(char)0x83;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movss_MR( REG_XMM0, REG_R11, (long)pRelative->offset, MOD_BASE_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//movss dword ptr[offset],xmm0
-			OpBuffer[obp++]=(char)0xF3;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x11;
-			OpBuffer[obp++]=(char)0x04;
-			OpBuffer[obp++]=(char)0x25;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movss_MR( REG_XMM0, 0, (long)pRelative->offset, MOD_DISP32, Schedule::GlobalVar );
 		}
 	}
@@ -231,12 +187,5 @@
 		else{
 			//movss dword ptr[rsp+offset],xmm0
-			OpBuffer[obp++]=(char)0xF3;
-			OpBuffer[obp++]=(char)0x0F;
-			OpBuffer[obp++]=(char)0x11;
-			OpBuffer[obp++]=(char)0x84;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_movss_MR( REG_XMM0, REG_RSP, (long)pRelative->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
@@ -244,18 +193,9 @@
 		if(pRelative->bOffsetOffset){
 			//add r11,qword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x03;
-			OpBuffer[obp++]=(char)0x9C;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelative->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 
@@ -334,15 +274,9 @@
 		if(pRelative->bOffsetOffset){
 			//mov ptr[r11+offset],rax/eax/ax/al
-			compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_R11,(int)pRelative->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_R11,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//mov ptr[offset],rax/eax/ax/al
-			compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,0,(int)pRelative->offset,MOD_DISP32);
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,0,(int)pRelative->offset,MOD_DISP32, Schedule::GlobalVar );
 		}
 	}
@@ -350,15 +284,9 @@
 		if(pRelative->bOffsetOffset){
 			//add r11,qword ptr[offset]
-			compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelative->offset, MOD_DISP32 );
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelative->offset, MOD_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//mov r11,qword ptr[offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelative->offset,MOD_DISP32);
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelative->offset,MOD_DISP32, Schedule::GlobalVar );
 		}
 
@@ -368,15 +296,9 @@
 		if(pRelative->bOffsetOffset){
 			//mov ptr[rsp+r11+offset],rax/eax/ax/al
-			compiler.codeGenerator.op_mov_MR_ex(varSize,REG_RAX,REG_RSP,REG_R11,(int)pRelative->offset,USE_OFFSET);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_MR_ex(varSize,REG_RAX,REG_RSP,REG_R11,(int)pRelative->offset,USE_OFFSET, Schedule::LocalVar );
 		}
 		else{
 			//mov ptr[rsp+offset],rax/eax/ax/al
-			compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
@@ -384,15 +306,9 @@
 		if(pRelative->bOffsetOffset){
 			//add r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_RSP, (int)pRelative->offset, MOD_BASE_DISP32 );
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_RSP, (int)pRelative->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 
Index: trunk/abdev/BasicCompiler64/Compile_Var.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/Compile_Var.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/Compile_Var.cpp	(revision 232)
@@ -868,8 +868,5 @@
 
 			//mov qword ptr[offset],rax
-			compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,0,offset,MOD_DISP32);
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,0,offset,MOD_DISP32, Schedule::GlobalVar );
 		}
 		else{
@@ -992,5 +989,5 @@
 
 		//mov rax,i64data
-		compiler.codeGenerator.op_mov64_ToReg(REG_RAX,i64data);
+		compiler.codeGenerator.op_mov_RV64(REG_RAX,i64data);
 
 		//mov qword ptr[rsp+offset],rax
@@ -1034,5 +1031,5 @@
 			if(i64data&0xFFFFFFFF00000000){
 				//mov rax,i64data
-				compiler.codeGenerator.op_mov64_ToReg(REG_RAX,i64data);
+				compiler.codeGenerator.op_mov_RV64(REG_RAX,i64data);
 
 				//mov qword ptr[rsp+offset],rax
@@ -1116,5 +1113,5 @@
 		//アラインメントを考慮
 		if( pVar->GetType().IsStruct() ){
-			int alignment = pVar->GetType().GetClass().iAlign;
+			int alignment = pVar->GetType().GetClass().GetFixedAlignment();
 
 			if( alignment ){
@@ -1222,10 +1219,5 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add r11,offset
-			OpBuffer[obp++]=(char)0x49;
-			OpBuffer[obp++]=(char)0x81;
-			OpBuffer[obp++]=(char)0xC3;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RV( REG_R11, (long)pRelativeVar->offset, Schedule::GlobalVar );
 
 			//mov reg,r11
@@ -1234,8 +1226,5 @@
 		else{
 			//mov reg,offset
-			compiler.codeGenerator.op_mov64_ToReg(reg,(long)pRelativeVar->offset);
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RV( sizeof(_int64), reg, (long)pRelativeVar->offset, Schedule::GlobalVar );
 		}
 	}
@@ -1243,15 +1232,9 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add r11,qword ptr[offset]
-			compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelativeVar->offset, MOD_DISP32 );
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelativeVar->offset, MOD_DISP32, Schedule::GlobalVar );
 		}
 		else{
 			//mov r11,qword ptr[offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelativeVar->offset,MOD_DISP32, Schedule::GlobalVar );
 		}
 
@@ -1261,10 +1244,5 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add r11,offset
-			OpBuffer[obp++]=(char)0x49;
-			OpBuffer[obp++]=(char)0x81;
-			OpBuffer[obp++]=(char)0xC3;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RV( REG_R11, (long)pRelativeVar->offset, Schedule::LocalVar );
 
 			//add r11,rsp
@@ -1279,8 +1257,5 @@
 
 			//add reg,offset
-			compiler.codeGenerator.op_add_RV(reg,(int)pRelativeVar->offset);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RV(reg,(long)pRelativeVar->offset, Schedule::LocalVar );
 		}
 	}
@@ -1288,18 +1263,9 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add r11,qword ptr[rsp+offset]
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x03;
-			OpBuffer[obp++]=(char)0x9C;
-			OpBuffer[obp++]=(char)0x24;
-			*((long *)(OpBuffer+obp))=(int)pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM( REG_R11, REG_RSP, (long)pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov r11,qword ptr[rsp+offset]
-			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
-			obp-=sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 
@@ -1331,8 +1297,5 @@
 			// ルートポインタを引き渡す
 			//mov rdx,offset
-			compiler.codeGenerator.op_mov_RV(sizeof(_int64), REG_RDX,(int)pVar->GetOffsetAddress());
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RV(sizeof(_int64), REG_RDX,(int)pVar->GetOffsetAddress(), Schedule::GlobalVar );
 
 			// Thisポインタを引き渡す
Index: trunk/abdev/BasicCompiler64/NumOpe.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 232)
@@ -971,5 +971,5 @@
 						if(XmmReg==REG_XMM4){
 							//mov r14,i64data
-							compiler.codeGenerator.op_mov64_ToReg(REG_R14,i64data);
+							compiler.codeGenerator.op_mov_RV64(REG_R14,i64data);
 
 
@@ -1026,5 +1026,5 @@
 
 						//mov reg,i64data
-						compiler.codeGenerator.op_mov64_ToReg(UseReg,i64data);
+						compiler.codeGenerator.op_mov_RV64(UseReg,i64data);
 
 						if(UseReg==REG_R14){
@@ -1194,5 +1194,5 @@
 
 			//mov reg,i64data
-			compiler.codeGenerator.op_mov64_ToReg(UseReg,i64data);
+			compiler.codeGenerator.op_mov_RV64(UseReg,i64data);
 		}
 
Index: trunk/abdev/BasicCompiler64/stack_frame.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/stack_frame.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler64/stack_frame.cpp	(revision 232)
@@ -25,17 +25,9 @@
 	answer_sp=lowest_sp-max_parm_size;
 
-	if((localParamSize%0x10)){
-		if((answer_sp%0x10)==0){
-			//関数のエントリポイントで128ビット境界ラインに合わせるため
-			return -(answer_sp-0x08);
-		}
-		return -(answer_sp-0x10);
+	if(((answer_sp-localParamSize)%0x10)==0){
+		//関数のエントリポイントで128ビット境界ラインに合わせるため
+		return -(answer_sp-0x08);
 	}
-
-	if((answer_sp%0x10)==0){
-		//関数のエントリポイントで128ビット境界ラインに合わせるため
-		return -(answer_sp-0x10);
-	}
-	return -(answer_sp-0x08);
+	return -(answer_sp-0x10);
 }
 int CStackFrame::GetNowSp(){
Index: trunk/abdev/BasicCompiler_Common/BasicCompiler.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/BasicCompiler.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/BasicCompiler.cpp	(revision 232)
@@ -98,5 +98,6 @@
 
 	extern int obp;
-	if(obp==1115){
+	if(obp>=0x988DE){
+		int test=0;
 	}
 }
Index: trunk/abdev/BasicCompiler_Common/Compile.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/Compile.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/Compile.cpp	(revision 232)
@@ -684,7 +684,7 @@
 			}
 
-#ifdef _DEBUG
+
 			epi_check();
-#endif
+
 
 			//コンパイルを中断するとき
Index: trunk/abdev/BasicCompiler_Common/Debug.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/Debug.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/Debug.cpp	(revision 232)
@@ -596,5 +596,5 @@
 			if(de.u.Exception.ExceptionRecord.ExceptionCode==EXCEPTION_ACCESS_VIOLATION){
 
-				//"スレッド(&H%X)でアクセス違反がありました(EPI=&H%08X)。\r\n"
+				//"スレッド(&H%X)でアクセス違反がありました(EIP=&H%08X)。\r\n"
 				sprintf(temporary,STRING_DEBUG_THREAD_ACCESSVIOLATION,de.dwThreadId,(ULONG_PTR)de.u.Exception.ExceptionRecord.ExceptionAddress);
 				DebugMessage(temporary);
@@ -621,5 +621,5 @@
 					if(de.dwThreadId==_DebugSys_dwThreadID[i4]) break;
 				}
-				Context.ContextFlags=CONTEXT_CONTROL;
+				Context.ContextFlags=CONTEXT_CONTROL | CONTEXT_INTEGER;
 				GetThreadContext(array_hDebugThread[i4],&Context);
 
@@ -627,6 +627,10 @@
 					i3&&(!(ImageBase+MemPos_CodeSection<=EIP_RIP(Context)&&EIP_RIP(Context)<ImageBase+MemPos_CodeSection+FileSize_CodeSection))
 					){
-					//"スレッド(&H%X)のブレーク ポイント(EPI=&H%08X)。\r\n"
-					sprintf(temporary,STRING_DEBUG_BREAKPOINT,de.dwThreadId,(ULONG_PTR)de.u.Exception.ExceptionRecord.ExceptionAddress);
+					//"スレッド(&H%X)のブレーク ポイント(EIP=&H%08X)。\r\n"
+					sprintf(temporary,
+						STRING_DEBUG_BREAKPOINT,
+						de.dwThreadId,
+						(ULONG_PTR)de.u.Exception.ExceptionRecord.ExceptionAddress,
+						(ULONG_PTR)Context.Rsp);
 					DebugMessage(temporary);
 				}
@@ -726,5 +730,5 @@
 			}
 			else if(de.u.Exception.ExceptionRecord.ExceptionCode==STATUS_INTEGER_DIVIDE_BY_ZERO){
-				//"0による除算が行われました。スレッド(&H%X) ブレーク ポイント(EPI=&H%08X)。\r\n"
+				//"0による除算が行われました。スレッド(&H%X) ブレーク ポイント(EIP=&H%08X)。\r\n"
 				sprintf(temporary,STRING_DEBUG_DIVIDE_BY_ZERO,de.dwThreadId,(ULONG_PTR)de.u.Exception.ExceptionRecord.ExceptionAddress);
 				DebugMessage(temporary);
@@ -734,5 +738,5 @@
 			}
 			else if(de.u.Exception.ExceptionRecord.ExceptionCode==STATUS_NO_MEMORY){
-				//"メモリ不足、またはヒープが壊れていることが原因で、メモリの割り当てに失敗しました。スレッド(&H%X) ブレーク ポイント(EPI=&H%08X)。\r\n"
+				//"メモリ不足、またはヒープが壊れていることが原因で、メモリの割り当てに失敗しました。スレッド(&H%X) ブレーク ポイント(EIP=&H%08X)。\r\n"
 				sprintf(temporary,STRING_DEBUG_DIVIDE_NO_MEMORY,de.dwThreadId,(ULONG_PTR)de.u.Exception.ExceptionRecord.ExceptionAddress);
 				DebugMessage(temporary);
Index: trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp	(revision 232)
@@ -325,5 +325,5 @@
 
 		//アラインメント
-		*(long *)(buffer+i2)=pobj_c->iAlign;
+		*(long *)(buffer+i2)=pobj_c->GetFixedAlignment();
 		i2+=sizeof(long);
 
@@ -705,5 +705,5 @@
 
 		//アラインメント
-		pobj_c->iAlign=*(long *)(buffer+i2);
+		pobj_c->SetFixedAlignment( *(long *)(buffer+i2) );
 		i2+=sizeof(long);
 
Index: trunk/abdev/BasicCompiler_Common/VariableOpe.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 232)
@@ -1002,5 +1002,5 @@
 	int alignment = 0;
 	if( pVar->GetType().IsStruct() ){
-		alignment = pVar->GetType().GetClass().iAlign;
+		alignment = pVar->GetType().GetClass().GetFixedAlignment();
 	}
 
Index: trunk/abdev/BasicCompiler_Common/common_msg_eng.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/common_msg_eng.h	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/common_msg_eng.h	(revision 232)
@@ -39,8 +39,8 @@
 #define STRING_DEBUG_THREADFINISH			"Thread(&H%X) exited with code &H%X.\r\n"
 #define STRING_DEBUG_PROCESSFINISH			"Program exited with code &H%X.\r\n"
-#define STRING_DEBUG_THREAD_INVALID_HANDLE	"Handle violation.   Thread=&H%X   EPI=&H%08X\r\n"
-#define STRING_DEBUG_THREAD_ACCESSVIOLATION	"Access violation.   Thread=&H%X   EPI=&H%08X\r\n"
-#define STRING_DEBUG_BREAKPOINT				"Breakpoint.         Thread=&H%X   EPI=&H%08X\r\n"
-#define STRING_DEBUG_DIVIDE_BY_ZERO			"Divided by zero.    Thread=&H%X   EPI=&H%08X\r\n"
+#define STRING_DEBUG_THREAD_INVALID_HANDLE	"Handle violation.   Thread=&H%X   EIP=&H%08X\r\n"
+#define STRING_DEBUG_THREAD_ACCESSVIOLATION	"Access violation.   Thread=&H%X   EIP=&H%08X\r\n"
+#define STRING_DEBUG_BREAKPOINT				"Breakpoint.         Thread=&H%X   EIP=&H%08X/ESP=&H%08X\r\n"
+#define STRING_DEBUG_DIVIDE_BY_ZERO			"Divided by zero.    Thread=&H%X   EIP=&H%08X\r\n"
 #define STRING_DEBUG_ERROR					"Unknown error.\ncode:%X"
 #define STRING_DEBUG_FAILED					"Failed to read the debug information."
Index: trunk/abdev/BasicCompiler_Common/common_msg_jpn.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/common_msg_jpn.h	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/common_msg_jpn.h	(revision 232)
@@ -39,9 +39,9 @@
 #define STRING_DEBUG_THREADFINISH			"スレッド(&H%X)はコード &H%X で終了しました。\r\n"
 #define STRING_DEBUG_PROCESSFINISH			"プログラムはコード &H%X で終了しました。\r\n"
-#define STRING_DEBUG_THREAD_INVALID_HANDLE	"スレッド(&H%X)でハンドル違反がありました(EPI=&H%08X)。\r\n"
-#define STRING_DEBUG_THREAD_ACCESSVIOLATION	"スレッド(&H%X)でアクセス違反がありました(EPI=&H%08X)。\r\n"
-#define STRING_DEBUG_BREAKPOINT				"スレッド(&H%X)のブレーク ポイント(EPI=&H%08X)。\r\n"
-#define STRING_DEBUG_DIVIDE_BY_ZERO			"0による除算が行われました。スレッド(&H%X) ブレーク ポイント(EPI=&H%08X)。\r\n"
-#define STRING_DEBUG_DIVIDE_NO_MEMORY		"メモリ不足、またはヒープが壊れていることが原因で、メモリの割り当てに失敗しました。スレッド(&H%X) ブレーク ポイント(EPI=&H%08X)。\r\n"
+#define STRING_DEBUG_THREAD_INVALID_HANDLE	"スレッド(&H%X)でハンドル違反がありました(EIP=&H%08X)。\r\n"
+#define STRING_DEBUG_THREAD_ACCESSVIOLATION	"スレッド(&H%X)でアクセス違反がありました(EIP=&H%08X)。\r\n"
+#define STRING_DEBUG_BREAKPOINT				"スレッド(&H%X)のブレーク ポイント(EIP=&H%08X/ESP=&H%08X)。\r\n"
+#define STRING_DEBUG_DIVIDE_BY_ZERO			"0による除算が行われました。スレッド(&H%X) ブレーク ポイント(EIP=&H%08X)。\r\n"
+#define STRING_DEBUG_DIVIDE_NO_MEMORY		"メモリ不足、またはヒープが壊れていることが原因で、メモリの割り当てに失敗しました。スレッド(&H%X) ブレーク ポイント(EIP=&H%08X)。\r\n"
 #define STRING_DEBUG_ERROR					"例外処理(code:&H%08X)\r\n"
 #define STRING_DEBUG_FAILED					"デバッグ情報の取得に失敗"
Index: trunk/abdev/BasicCompiler_Common/include/Class.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/Class.h	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/include/Class.h	(revision 232)
@@ -71,4 +71,7 @@
 	// 静的メソッド
 	Methods staticMethods;
+
+	//アラインメント値
+	int fixedAlignment;
 
 	// XMLシリアライズ用
@@ -93,11 +96,9 @@
 		ar & BOOST_SERIALIZATION_NVP( vtblNum );
 		ar & BOOST_SERIALIZATION_NVP( staticMethods );
+		ar & BOOST_SERIALIZATION_NVP( fixedAlignment );
 	}
 
 	bool isReady;
 public:
-
-	//アラインメント値
-	int iAlign;
 
 	CClass( const NamespaceScopes &namespaceScopes, const NamespaceScopesCollection &importedNamespaces, const string &name )
@@ -107,5 +108,5 @@
 		, pSuperClass( NULL )
 		, isReady( false )
-		, iAlign( 0 )
+		, fixedAlignment( 0 )
 		, ConstructorMemberSubIndex( -1 )
 		, DestructorMemberSubIndex( -1 )
@@ -123,5 +124,5 @@
 		, pSuperClass( NULL )
 		, isReady( false )
-		, iAlign( 0 )
+		, fixedAlignment( 0 )
 		, ConstructorMemberSubIndex( -1 )
 		, DestructorMemberSubIndex( -1 )
@@ -320,4 +321,14 @@
 	}
 
+	// ユーザ指定のアラインメント固定値
+	int GetFixedAlignment() const
+	{
+		return fixedAlignment;
+	}
+	void SetFixedAlignment( int fixedAlignment )
+	{
+		this->fixedAlignment = fixedAlignment;
+	}
+
 	// メンバの総合サイズを取得
 	int GetSize() const;
Index: trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/include/CodeGenerator.h	(revision 232)
@@ -41,14 +41,12 @@
 	void __jmp_op_format( char opcode, long offset, int op_size );
 public:
-	void op_mov_RV					(int op_size,int reg,long i32data);
+	void op_mov_RV					(int op_size,int reg,long i32data, Schedule::Type scheduleType = Schedule::None );
 	void op_mov_RV64				(int reg,_int64 i64data);
 	void op_mov_RM					(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None );
 	void op_mov_RM_ex				(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType = Schedule::None );
-	void op_mov_MR					(int op_size,int reg,int base_reg,long offset,char mod);
-	void op_mov_MR_ex				(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset);
+	void op_mov_MR					(int op_size,int reg,int base_reg,long offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	void op_mov_MR_ex				(int op_size,int reg,int base_reg1,int base_reg2,long offset,BOOL bUseOffset, Schedule::Type scheduleType = Schedule::None );
 	void op_mov_MV					(int op_size,int base_reg,int offset,BOOL bUseOffset,long i32data);
 	void op_mov_RR					(int reg1,int reg2);
-	void op_mov64_ToReg				(int reg,_int64 i64data);
-	void op_mov64_ToReg				(int reg,long i32data);
 	void op_movsxd					(int reg64,int reg32);
 	void op_movsx64_FromReg16		(int reg64,int reg16);
@@ -61,5 +59,5 @@
 	void op_dec						(int reg);
 	void op_add_RM					(int op_size,int reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
-	void op_add_RV					(int reg,long offset);
+	void op_add_RV					(int reg,long offset, Schedule::Type scheduleType = Schedule::None );
 	void op_add_RR				(int reg1,int reg2);
 	void op_add32_reg				(int reg1,int reg2);
@@ -86,11 +84,11 @@
 	void op_cmp_value				(int op_size,int reg,char byte_data);
 	void op_setne					(int reg);
-	void op_movlpd_MR				(int xmm_reg,int base_reg,int offset,char mod);
-	void op_movlpd_RM				(int xmm_reg,int base_reg,int offset,char mod);
+	void op_movlpd_MR				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	void op_movlpd_RM				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
 	void op_movsd_RR				(int xmm_reg1,int xmm_reg2);
-	void op_movsd_MR				(int xmm_reg,int base_reg,int offset,char mod);
+	void op_movsd_MR				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
 	void op_movss_RR				(int xmm_reg1,int xmm_reg2);
-	void op_movss_RM				(int xmm_reg,int base_reg,int offset,char mod);
-	void op_movss_MR				(int xmm_reg,int base_reg,int offset,char mod);
+	void op_movss_RM				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
+	void op_movss_MR				(int xmm_reg,int base_reg,int offset,char mod, Schedule::Type scheduleType = Schedule::None );
 	void op_movd_RX					(int reg,int xmm_reg);
 	void op_cvtsd2ss				(int xmm_reg1,int xmm_reg2);
Index: trunk/abdev/BasicCompiler_Common/include/NativeCode.h
===================================================================
--- trunk/abdev/BasicCompiler_Common/include/NativeCode.h	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/include/NativeCode.h	(revision 232)
@@ -8,4 +8,5 @@
 
 void AddLocalVarAddrSchedule();
+void ObpPlus( int step = 1 );
 
 class Schedule
@@ -137,5 +138,5 @@
 		extern int obp;
 		memcpy( OpBuffer + obp, codeBuffer, size );
-		obp += size;
+		ObpPlus( size );
 	}
 	void Put( const NativeCode &nativeCode )
@@ -180,5 +181,5 @@
 		extern int obp;
 		*((long *)(OpBuffer+obp))=l;
-		obp+=sizeof(long);
+		ObpPlus( sizeof(long) );
 	}
 	void Put( short s )
@@ -196,5 +197,6 @@
 		extern char *OpBuffer;
 		extern int obp;
-		OpBuffer[obp++]=c;
+		OpBuffer[obp]=c;
+		ObpPlus();
 	}
 };
Index: trunk/abdev/BasicCompiler_Common/src/Class.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/src/Class.cpp	(revision 231)
+++ trunk/abdev/BasicCompiler_Common/src/Class.cpp	(revision 232)
@@ -581,7 +581,9 @@
 	int offset = IsExistVirtualFunctions() ? PTR_SIZE : 0;
 
-	int alignment;
-	if(iAlign) alignment=iAlign;
-	else alignment=1;
+	int alignment = 1;
+	if( GetFixedAlignment() )
+	{
+		alignment = GetFixedAlignment();
+	}
 
 	int iMaxAlign=0;
@@ -605,5 +607,5 @@
 
 		//アラインメントを考慮
-		if(iAlign&&iAlign<member_size){
+		if(GetFixedAlignment()&&GetFixedAlignment()<member_size){
 			if(offset%alignment) offset+=alignment-(offset%alignment);
 		}
@@ -667,5 +669,5 @@
 	if(alignment==0) return 0;
 
-	if(iAlign) alignment=iAlign;
+	if(GetFixedAlignment()) alignment=GetFixedAlignment();
 
 	return alignment;
@@ -1254,5 +1256,5 @@
 			}
 
-			pobj_c->iAlign=iAlign;
+			pobj_c->SetFixedAlignment( iAlign );
 
 			pobj_c->Readed();
Index: trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp
===================================================================
--- trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp	(revision 232)
+++ trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp	(revision 232)
@@ -0,0 +1,15 @@
+#include "stdafx.h"
+
+#define BREAK_EIP(checkEip)  (obp+0x00401000<=checkEip)
+
+void ObpPlus( int step )
+{
+	extern int obp;
+	obp += step;
+
+	// 例：epi=0x00401999
+	if( BREAK_EIP(0x00401999) )
+	{
+		int test=0;
+	}
+}
