Index: trunk/abdev/BasicCompiler32/NumOpe.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/NumOpe.cpp	(revision 224)
+++ trunk/abdev/BasicCompiler32/NumOpe.cpp	(revision 225)
@@ -15,57 +15,49 @@
 	if(type==DEF_OBJECT || type==DEF_STRUCT){
 		//push eax
-		op_push(REG_EAX);
+		compiler.codeGenerator.op_push(REG_EAX);
 	}
 	else if(type==DEF_DOUBLE){
 		//sub esp,8
-		op_sub_esp(8);
+		compiler.codeGenerator.op_sub_esp(8);
 
 		//fstp qword ptr[esp]
-		OpBuffer[obp++]=(char)0xDD;
-		OpBuffer[obp++]=(char)0x1C;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.op_fstp_basereg( DEF_DOUBLE, REG_ESP );
 	}
 	else if(type==DEF_SINGLE){
 		//sub esp,4
-		op_sub_esp(4);
+		compiler.codeGenerator.op_sub_esp(4);
 
 		//fstp dword ptr[esp]
-		OpBuffer[obp++]=(char)0xD9;
-		OpBuffer[obp++]=(char)0x1C;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.op_fstp_basereg( DEF_SINGLE, REG_ESP );
 	}
 	else if(type==DEF_INT64||type==DEF_QWORD){
 		//push edx
-		op_push(REG_EDX);
+		compiler.codeGenerator.op_push(REG_EDX);
 
 		//push eax
-		op_push(REG_EAX);
+		compiler.codeGenerator.op_push(REG_EAX);
 	}
 	else if(type==DEF_LONG){
 		//push eax
-		op_push(REG_EAX);
+		compiler.codeGenerator.op_push(REG_EAX);
 	}
 	else if(type==DEF_INTEGER || (Smoothie::IsUnicode()&&type==DEF_CHAR)){
 		//movsx ebx,ax
-		OpBuffer[obp++]=(char)0x0F;
-		OpBuffer[obp++]=(char)0xBF;
-		OpBuffer[obp++]=(char)0xD8;
+		compiler.codeGenerator.op_movsx_R32R16( REG_EBX, REG_EAX );
 
 		//push ebx
-		op_push(REG_EBX);
+		compiler.codeGenerator.op_push(REG_EBX);
 	}
 	else if(type==DEF_SBYTE || (Smoothie::IsUnicode()==false&&type==DEF_CHAR)){
 		//movsx ebx,al
-		OpBuffer[obp++]=(char)0x0F;
-		OpBuffer[obp++]=(char)0xBE;
-		OpBuffer[obp++]=(char)0xD8;
+		compiler.codeGenerator.op_movsx_R32R8( REG_EBX, REG_EAX );
 
 		//push ebx
-		op_push(REG_EBX);
+		compiler.codeGenerator.op_push(REG_EBX);
 	}
 	else if(type==DEF_DWORD||type==DEF_WORD||type==DEF_BYTE||type==DEF_BOOLEAN||
 		IsPtrType(type)){
 		//push eax
-		op_push(REG_EAX);
+		compiler.codeGenerator.op_push(REG_EAX);
 	}
 	else{
@@ -157,5 +149,5 @@
 
 		//オブジェクトポインタをecxにコピー
-		op_mov_RR( REG_ECX, useReg );
+		compiler.codeGenerator.op_mov_RR( REG_ECX, useReg );
 
 		RELATIVE_VAR relativeVar;
@@ -200,5 +192,5 @@
 				//オブジェクトポインタをスタックに入れておく
 				//push reg
-				op_push( useReg );
+				compiler.codeGenerator.op_push( useReg );
 
 				if( !Opcode_CallProc(parameter,pUserProc,PROCFLAG_NEW,termLeft,0 ) ){
@@ -207,5 +199,5 @@
 				}
 
-				op_pop();
+				compiler.codeGenerator.op_pop();
 
 				/////////////////////
@@ -521,16 +513,16 @@
 	if( resultType.IsReal() ){
 		//fld ptr[esp]
-		op_fld_ptr_esp( resultType.GetBasicType() );
+		compiler.codeGenerator.op_fld_ptr_esp( resultType.GetBasicType() );
 
 		//add esp,size
-		op_add_esp( resultType.GetBasicSize() );
+		compiler.codeGenerator.op_add_esp( resultType.GetBasicSize() );
 	}
 	else{
 		//pop eax
-		op_pop(REG_EAX);
+		compiler.codeGenerator.op_pop(REG_EAX);
 
 		if( resultType.Is64() ){
 			//pop edx
-			op_pop(REG_EDX);
+			compiler.codeGenerator.op_pop(REG_EDX);
 		}
 	}
@@ -603,5 +595,5 @@
 
 		//mov eax,i2
-		op_mov_RV(REG_EAX,i2);
+		compiler.codeGenerator.op_mov_RV(REG_EAX,i2);
 		obp-=sizeof(long);
 		pobj_DataTableSchedule->add();
@@ -613,5 +605,5 @@
 
 		//push eax
-		op_push( REG_EAX );
+		compiler.codeGenerator.op_push( REG_EAX );
 
 		return true;
@@ -815,10 +807,10 @@
 								//sub esp,size
 								//fstp ptr[esp]
-								op_fstp_push( resultType );
+								compiler.codeGenerator.op_fstp_push( resultType );
 							}
 							else{
 								if( resultType.Is64() ){
 									//push edx
-									op_push( REG_EDX );
+									compiler.codeGenerator.op_push( REG_EDX );
 								}
 								else{
@@ -827,5 +819,5 @@
 
 								//push eax
-								op_push( REG_EAX );
+								compiler.codeGenerator.op_push( REG_EAX );
 							}
 						}
@@ -851,5 +843,5 @@
 
 						//push 0
-						op_push_V( 0 );
+						compiler.codeGenerator.op_push_V( 0 );
 
 						sp++;
@@ -912,8 +904,8 @@
 
 						//push HILONG(dbl)
-						op_push_V((long)*(long *)(((char *)(&i64data))+4));
+						compiler.codeGenerator.op_push_V((long)*(long *)(((char *)(&i64data))+4));
 
 						//push LOLONG(dbl)
-						op_push_V(*(long *)(&i64data));
+						compiler.codeGenerator.op_push_V(*(long *)(&i64data));
 					}
 					else if(type_stack[sp]==DEF_SINGLE){
@@ -926,5 +918,5 @@
 
 						//push term
-						op_push_V(i3);
+						compiler.codeGenerator.op_push_V(i3);
 					}
 					else{
@@ -932,5 +924,5 @@
 
 						//push term
-						op_push_V((long)i64data);
+						compiler.codeGenerator.op_push_V((long)i64data);
 
 						if((long)i64data==0) index_stack[sp]=LITERAL_NULL;
@@ -1082,8 +1074,8 @@
 
 			//push HILONG(i64data)
-			op_push_V((long)*(long *)(((char *)(&i64data))+4));
+			compiler.codeGenerator.op_push_V((long)*(long *)(((char *)(&i64data))+4));
 
 			//push LOLONG(i64data)
-			op_push_V(*(long *)(&i64data));
+			compiler.codeGenerator.op_push_V(*(long *)(&i64data));
 		}
 		else if( resultType.IsSingle() ){
@@ -1097,5 +1089,5 @@
 
 			//push flt
-			op_push_V(i3);
+			compiler.codeGenerator.op_push_V(i3);
 		}
 		else{
@@ -1108,5 +1100,5 @@
 
 			//push term
-			op_push_V(i3);
+			compiler.codeGenerator.op_push_V(i3);
 		}
 
