Index: trunk/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp	(revision 230)
+++ trunk/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp	(revision 231)
@@ -162,9 +162,5 @@
 		if(pRelativeVar->bOffsetOffset){
 			//add ecx,offset
-			OpBuffer[obp++]=(char)0x81;
-			OpBuffer[obp++]=(char)0xC1;
-			*((long *)(OpBuffer+obp))=pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RV( REG_ECX, pRelativeVar->offset, Schedule::LocalVar );
 
 			//push dword ptr[ebp+ecx]
@@ -178,18 +174,10 @@
 		else{
 			//push dword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0xFF;
-			OpBuffer[obp++]=(char)0xB5;
-			*((long *)(OpBuffer+obp))=pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_push_M( REG_EBP, pRelativeVar->offset, Schedule::LocalVar );
 		}
 	}
 	else if(pRelativeVar->dwKind==VAR_REFLOCAL){
 		//mov eax,dword ptr[ebp+offset]
-		OpBuffer[obp++]=(char)0x8B;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=pRelativeVar->offset;
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EBP, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 
 		if(pRelativeVar->bOffsetOffset){
Index: trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 230)
+++ trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 231)
@@ -677,43 +677,21 @@
 			}
 		}
-		else if(i3==DEF_DOUBLE){
+		else if( i3==DEF_DOUBLE
+			|| i3 == DEF_SINGLE )
+		{
 			//fld qword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0xDD;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
-		}
-		else if(i3==DEF_SINGLE){
-			//fld dword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0xD9;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_fld_base_offset( i3, REG_EBP, RelativeVar.offset, Schedule::LocalVar );
 		}
 		else if(i3==DEF_INT64||i3==DEF_QWORD){
 			//mov eax,dword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EBP, RelativeVar.offset, MOD_BASE_DISP32, Schedule::LocalVar );
 
 			//mov edx,dword ptr[ebp+offset+sizeof(long)]
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0x95;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset+sizeof(long);
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EDX, REG_EBP, RelativeVar.offset+sizeof(long), MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else if(i3==DEF_LONG||i3==DEF_DWORD||
 			IsPtrType(i3)){
 			//mov eax,dword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EBP, RelativeVar.offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else if(i3==DEF_INTEGER||i3==DEF_WORD || (Smoothie::IsUnicode()&&i3==DEF_CHAR)){
@@ -722,10 +700,5 @@
 
 			//mov ax,word ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0x66;
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM( sizeof(short), REG_EAX, REG_EBP, RelativeVar.offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else if(i3==DEF_SBYTE||i3==DEF_BYTE||i3==DEF_BOOLEAN || (Smoothie::IsUnicode()==false&&i3==DEF_CHAR)){
@@ -734,9 +707,5 @@
 
 			//mov al,byte ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0x8A;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=RelativeVar.offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM( sizeof(char), REG_EAX, REG_EBP, RelativeVar.offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
Index: trunk/abdev/BasicCompiler32/Compile_Var.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Var.cpp	(revision 230)
+++ trunk/abdev/BasicCompiler32/Compile_Var.cpp	(revision 231)
@@ -978,61 +978,34 @@
 
 		//mov dword ptr[ebp+offset+sizeof(long)],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset+sizeof(long);
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_EBP, offset+sizeof(long), MOD_BASE_DISP32, Schedule::LocalVar );
 
 		//mov eax,LOLONG(dbl)
-		OpBuffer[obp++]=(char)0xB8;
-		*((long *)(OpBuffer+obp))=*(long *)(&dbl);
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_RV( REG_EAX, *(long *)(&dbl) );
 
 		//mov dword ptr[ebp+offset],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset;
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_EBP, offset, Schedule::LocalVar );
 	}
 	else if( type.IsSingle() ){
 		float flt;
 		flt=(float)dbl;
+
 		//mov eax,InitValue
-		OpBuffer[obp++]=(char)0xB8;
-		*((long *)(OpBuffer+obp))=*(long *)&flt;
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_RV( REG_EAX, *(long *)&flt );
 
 		//mov dword ptr[ebp+offset],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset;
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_EBP, offset, MOD_BASE_DISP32, Schedule::LocalVar );
 	}
 	else if( type.Is64() ){
 		//mov eax,HILONG(i64data)
-		OpBuffer[obp++]=(char)0xB8;
-		*((long *)(OpBuffer+obp))=(long)*(long *)(((char *)(&i64data))+4);
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_RV( REG_EAX, *(long *)(((char *)(&i64data))+4) );
 
 		//mov dword ptr[ebp+offset+sizeof(long)],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset+sizeof(long);
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_EBP, offset+sizeof(long), MOD_BASE_DISP32, Schedule::LocalVar );
 
 		//mov eax,LOLONG(i64data)
-		OpBuffer[obp++]=(char)0xB8;
-		*((long *)(OpBuffer+obp))=*(long *)(&i64data);
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_RV( REG_EAX, *(long *)(&i64data) );
 
 		//mov dword ptr[ebp+offset],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset;
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_EBP, offset, Schedule::LocalVar );
 	}
 	else if( type.IsDWord() || type.IsLong() || type.IsPointer() ){
@@ -1053,15 +1026,9 @@
 		else{
 			//mov eax,InitValue
-			OpBuffer[obp++]=(char)0xB8;
-			*((long *)(OpBuffer+obp))=(long)i64data;
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RV( REG_EAX, (long)i64data );
 		}
 
 		//mov dword ptr[ebp+offset],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset;
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_EBP, offset, MOD_BASE_DISP32, Schedule::LocalVar );
 	}
 	else if( type.IsWord() || type.IsInteger() ){
@@ -1073,10 +1040,5 @@
 
 		//mov word ptr[ebp+offset],ax
-		OpBuffer[obp++]=(char)0x66;
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x85;
-		*((long *)(OpBuffer+obp))=offset;
-		AddLocalVarAddrSchedule();
-		obp+=sizeof(long);
+		compiler.codeGenerator.op_mov_MR( sizeof(short), REG_EAX, REG_EBP, offset, MOD_BASE_DISP32, Schedule::LocalVar );
 	}
 	else if( type.IsSByte() || type.IsByte() || type.IsBoolean() ){
@@ -1287,27 +1249,17 @@
 		if(pRelativeVar->bOffsetOffset){
 			//mov eax,ecx
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xC1;
+			compiler.codeGenerator.op_mov_RR( REG_EAX, REG_ECX );
 
 			//add eax,dword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0x03;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_add_RM( sizeof(long), REG_EAX, REG_EBP, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 		else{
 			//mov eax,dword ptr[ebp+offset]
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0x85;
-			*((long *)(OpBuffer+obp))=pRelativeVar->offset;
-			AddLocalVarAddrSchedule();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EBP, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
 		}
 	}
 	else if(pRelativeVar->dwKind==VAR_DIRECTMEM){
 		//mov eax,ecx
-		OpBuffer[obp++]=(char)0x8B;
-		OpBuffer[obp++]=(char)0xC1;
+		compiler.codeGenerator.op_mov_RR( REG_EAX, REG_ECX );
 	}
 }
@@ -1340,8 +1292,5 @@
 
 			//mov eax,offset
-			compiler.codeGenerator.op_mov_RV(REG_EAX,(int)pVar->GetOffsetAddress());
-			obp-=sizeof(long);
-			pobj_GlobalVarSchedule->add();
-			obp+=sizeof(long);
+			compiler.codeGenerator.op_mov_RV(REG_EAX,(int)pVar->GetOffsetAddress(), Schedule::GlobalVar );
 
 			//push eax
