Index: trunk/abdev/BasicCompiler32/NumOpe_Logical.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/NumOpe_Logical.cpp	(revision 206)
+++ trunk/abdev/BasicCompiler32/NumOpe_Logical.cpp	(revision 225)
@@ -1,3 +1,5 @@
 #include "stdafx.h"
+
+#include <Compiler.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -28,8 +30,8 @@
 
 			//pop ebx
-			op_pop(REG_EBX);
+			compiler.codeGenerator.op_pop(REG_EBX);
 
 			//pop ecx
-			op_pop(REG_ECX);
+			compiler.codeGenerator.op_pop(REG_ECX);
 		}
 		else{
@@ -37,5 +39,5 @@
 
 			//pop eax
-			op_pop(REG_EAX);
+			compiler.codeGenerator.op_pop(REG_EAX);
 
 			if(IsSignedType(type[sp-1])){
@@ -44,5 +46,5 @@
 				
 				//cdq
-				op_cdq();
+				compiler.codeGenerator.op_cdq();
 			}
 			else{
@@ -51,14 +53,12 @@
 
 				//xor edx,edx
-				op_zero_reg(REG_EDX);
+				compiler.codeGenerator.op_zero_reg(REG_EDX);
 			}
 
 			//mov ebx,eax
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xD8;
+			compiler.codeGenerator.op_mov_RR( REG_EBX, REG_EAX );
 
 			//mov ecx,edx
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xCA;
+			compiler.codeGenerator.op_mov_RR( REG_ECX, REG_EDX );
 		}
 
@@ -67,13 +67,17 @@
 
 			//xor dword ptr[esp],ebx
-			OpBuffer[obp++]=(char)0x31;
-			OpBuffer[obp++]=(char)0x1C;
-			OpBuffer[obp++]=(char)0x24;
+			compiler.codeGenerator.PutOld(
+				(char)0x31,
+				(char)0x1C,
+				(char)0x24
+			);
 
 			//xor dword ptr[esp+sizeof(long)],ecx
-			OpBuffer[obp++]=(char)0x31;
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x24;
-			OpBuffer[obp++]=(char)0x04;
+			compiler.codeGenerator.PutOld(
+				(char)0x31,
+				(char)0x4C,
+				(char)0x24,
+				(char)0x04
+			);
 		}
 		else{
@@ -81,5 +85,5 @@
 			if(IsSignedType(type[sp-2])){
 				//pop eax
-				op_pop(REG_EAX);
+				compiler.codeGenerator.op_pop(REG_EAX);
 
 				//符号拡張
@@ -87,9 +91,9 @@
 
 				//cdq
-				op_cdq();
+				compiler.codeGenerator.op_cdq();
 			}
 			else{
 				//pop eax
-				op_pop(REG_EAX);
+				compiler.codeGenerator.op_pop(REG_EAX);
 
 				//ビット拡張
@@ -97,20 +101,18 @@
 
 				//xor edx,edx
-				op_zero_reg(REG_EDX);
+				compiler.codeGenerator.op_zero_reg(REG_EDX);
 			}
 
 			//xor ebx,eax
-			OpBuffer[obp++]=(char)0x33;
-			OpBuffer[obp++]=(char)0xD8;
+			compiler.codeGenerator.op_xor_RR( REG_EBX, REG_EAX );
 
 			//xor ecx,edx
-			OpBuffer[obp++]=(char)0x33;
-			OpBuffer[obp++]=(char)0xCA;
+			compiler.codeGenerator.op_xor_RR( REG_ECX, REG_EDX );
 
 			//push ecx
-			op_push(REG_ECX);
+			compiler.codeGenerator.op_push(REG_ECX);
 
 			//push ebx
-			op_push(REG_EBX);
+			compiler.codeGenerator.op_push(REG_EBX);
 		}
 
@@ -125,20 +127,17 @@
 
 		//pop ebx
-		op_pop(REG_EBX);
+		compiler.codeGenerator.op_pop(REG_EBX);
 
 		//pop eax
-		op_pop(REG_EAX);
+		compiler.codeGenerator.op_pop(REG_EAX);
 
 		//sub esp,4
-		op_sub_esp(4);
+		compiler.codeGenerator.op_sub_esp(4);
 
 		//xor eax,ebx
-		OpBuffer[obp++]=(char)0x33;
-		OpBuffer[obp++]=(char)0xC3;
+		compiler.codeGenerator.op_xor_RR( REG_EAX, REG_EBX );
 
 		//mov dword ptr[esp],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x04;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_ESP, 0, MOD_BASE );
 
 		sp--;
@@ -174,8 +173,8 @@
 
 			//pop ebx
-			op_pop(REG_EBX);
+			compiler.codeGenerator.op_pop(REG_EBX);
 
 			//pop ecx
-			op_pop(REG_ECX);
+			compiler.codeGenerator.op_pop(REG_ECX);
 		}
 		else{
@@ -183,5 +182,5 @@
 
 			//pop eax
-			op_pop(REG_EAX);
+			compiler.codeGenerator.op_pop(REG_EAX);
 
 			if(IsSignedType(type[sp-1])){
@@ -190,5 +189,5 @@
 				
 				//cdq
-				op_cdq();
+				compiler.codeGenerator.op_cdq();
 			}
 			else{
@@ -197,14 +196,12 @@
 
 				//xor edx,edx
-				op_zero_reg(REG_EDX);
+				compiler.codeGenerator.op_zero_reg(REG_EDX);
 			}
 
 			//mov ebx,eax
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xD8;
+			compiler.codeGenerator.op_mov_RR( REG_EBX, REG_EAX );
 
 			//mov ecx,edx
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xCA;
+			compiler.codeGenerator.op_mov_RR( REG_ECX, REG_EDX );
 		}
 
@@ -213,13 +210,17 @@
 
 			//or dword ptr[esp],ebx
-			OpBuffer[obp++]=(char)0x09;
-			OpBuffer[obp++]=(char)0x1C;
-			OpBuffer[obp++]=(char)0x24;
+			compiler.codeGenerator.PutOld(
+				(char)0x09,
+				(char)0x1C,
+				(char)0x24
+			);
 
 			//or dword ptr[esp+sizeof(long)],ecx
-			OpBuffer[obp++]=(char)0x09;
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x24;
-			OpBuffer[obp++]=(char)0x04;
+			compiler.codeGenerator.PutOld(
+				(char)0x09,
+				(char)0x4C,
+				(char)0x24,
+				(char)0x04
+			);
 		}
 		else{
@@ -227,5 +228,5 @@
 			if(IsSignedType(type[sp-2])){
 				//pop eax
-				op_pop(REG_EAX);
+				compiler.codeGenerator.op_pop(REG_EAX);
 
 				//符号拡張
@@ -233,9 +234,9 @@
 
 				//cdq
-				op_cdq();
+				compiler.codeGenerator.op_cdq();
 			}
 			else{
 				//pop eax
-				op_pop(REG_EAX);
+				compiler.codeGenerator.op_pop(REG_EAX);
 
 				//ビット拡張
@@ -243,20 +244,18 @@
 
 				//xor edx,edx
-				op_zero_reg(REG_EDX);
+				compiler.codeGenerator.op_zero_reg(REG_EDX);
 			}
 
 			//or ebx,eax
-			OpBuffer[obp++]=(char)0x0B;
-			OpBuffer[obp++]=(char)0xD8;
+			compiler.codeGenerator.op_or_RR( sizeof(long), REG_EBX, REG_EAX );
 
 			//or ecx,edx
-			OpBuffer[obp++]=(char)0x0B;
-			OpBuffer[obp++]=(char)0xCA;
+			compiler.codeGenerator.op_or_RR( sizeof(long), REG_ECX, REG_EDX );
 
 			//push ecx
-			op_push(REG_ECX);
+			compiler.codeGenerator.op_push(REG_ECX);
 
 			//push ebx
-			op_push(REG_EBX);
+			compiler.codeGenerator.op_push(REG_EBX);
 		}
 
@@ -271,20 +270,17 @@
 
 		//pop ebx
-		op_pop(REG_EBX);
+		compiler.codeGenerator.op_pop(REG_EBX);
 
 		//pop eax
-		op_pop(REG_EAX);
+		compiler.codeGenerator.op_pop(REG_EAX);
 
 		//sub esp,4
-		op_sub_esp(4);
+		compiler.codeGenerator.op_sub_esp(4);
 
 		//or eax,ebx
-		OpBuffer[obp++]=(char)0x0B;
-		OpBuffer[obp++]=(char)0xC3;
+		compiler.codeGenerator.op_or_RR( sizeof(long), REG_EAX, REG_EBX );
 
 		//mov dword ptr[esp],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x04;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_ESP, 0, MOD_BASE );
 
 		sp--;
@@ -320,8 +316,8 @@
 
 			//pop ebx
-			op_pop(REG_EBX);
+			compiler.codeGenerator.op_pop(REG_EBX);
 
 			//pop ecx
-			op_pop(REG_ECX);
+			compiler.codeGenerator.op_pop(REG_ECX);
 		}
 		else{
@@ -329,5 +325,5 @@
 
 			//pop eax
-			op_pop(REG_EAX);
+			compiler.codeGenerator.op_pop(REG_EAX);
 
 			if(IsSignedType(type[sp-1])){
@@ -336,5 +332,5 @@
 				
 				//cdq
-				op_cdq();
+				compiler.codeGenerator.op_cdq();
 			}
 			else{
@@ -343,14 +339,12 @@
 
 				//xor edx,edx
-				op_zero_reg(REG_EDX);
+				compiler.codeGenerator.op_zero_reg(REG_EDX);
 			}
 
 			//mov ebx,eax
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xD8;
+			compiler.codeGenerator.op_mov_RR( REG_EBX, REG_EAX );
 
 			//mov ecx,edx
-			OpBuffer[obp++]=(char)0x8B;
-			OpBuffer[obp++]=(char)0xCA;
+			compiler.codeGenerator.op_mov_RR( REG_ECX, REG_EDX );
 		}
 
@@ -359,13 +353,17 @@
 
 			//and dword ptr[esp],ebx
-			OpBuffer[obp++]=(char)0x21;
-			OpBuffer[obp++]=(char)0x1C;
-			OpBuffer[obp++]=(char)0x24;
+			compiler.codeGenerator.PutOld(
+				(char)0x21,
+				(char)0x1C,
+				(char)0x24
+			);
 
 			//and dword ptr[esp+sizeof(long)],ecx
-			OpBuffer[obp++]=(char)0x21;
-			OpBuffer[obp++]=(char)0x4C;
-			OpBuffer[obp++]=(char)0x24;
-			OpBuffer[obp++]=(char)0x04;
+			compiler.codeGenerator.PutOld(
+				(char)0x21,
+				(char)0x4C,
+				(char)0x24,
+				(char)0x04
+			);
 		}
 		else{
@@ -373,5 +371,5 @@
 			if(IsSignedType(type[sp-2])){
 				//pop eax
-				op_pop(REG_EAX);
+				compiler.codeGenerator.op_pop(REG_EAX);
 
 				//符号拡張
@@ -379,9 +377,9 @@
 
 				//cdq
-				op_cdq();
+				compiler.codeGenerator.op_cdq();
 			}
 			else{
 				//pop eax
-				op_pop(REG_EAX);
+				compiler.codeGenerator.op_pop(REG_EAX);
 
 				//ビット拡張
@@ -389,20 +387,18 @@
 
 				//xor edx,edx
-				op_zero_reg(REG_EDX);
+				compiler.codeGenerator.op_zero_reg(REG_EDX);
 			}
 
 			//and ebx,eax
-			OpBuffer[obp++]=(char)0x23;
-			OpBuffer[obp++]=(char)0xD8;
+			compiler.codeGenerator.op_and_RR( REG_EBX, REG_EAX );
 
 			//and ecx,edx
-			OpBuffer[obp++]=(char)0x23;
-			OpBuffer[obp++]=(char)0xCA;
+			compiler.codeGenerator.op_and_RR( REG_ECX, REG_EDX );
 
 			//push ecx
-			op_push(REG_ECX);
+			compiler.codeGenerator.op_push(REG_ECX);
 
 			//push ebx
-			op_push(REG_EBX);
+			compiler.codeGenerator.op_push(REG_EBX);
 		}
 
@@ -417,20 +413,17 @@
 
 		//pop ebx
-		op_pop(REG_EBX);
+		compiler.codeGenerator.op_pop(REG_EBX);
 
 		//pop eax
-		op_pop(REG_EAX);
+		compiler.codeGenerator.op_pop(REG_EAX);
 
 		//sub esp,4
-		op_sub_esp(4);
+		compiler.codeGenerator.op_sub_esp(4);
 
 		//and eax,ebx
-		OpBuffer[obp++]=(char)0x23;
-		OpBuffer[obp++]=(char)0xC3;
+		compiler.codeGenerator.op_and_RR( REG_EAX, REG_EBX );
 
 		//mov dword ptr[esp],eax
-		OpBuffer[obp++]=(char)0x89;
-		OpBuffer[obp++]=(char)0x04;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, REG_ESP, 0, MOD_BASE );
 
 		sp--;
@@ -454,26 +447,26 @@
 	if( type[sp - 1] == DEF_BOOLEAN ){
 		//pop eax
-		op_pop( REG_EAX );
+		compiler.codeGenerator.op_pop( REG_EAX );
 
 		//cmp eax,0
-		op_cmp_value(GetTypeSize(type[sp-1],-1),REG_EAX,0);
+		compiler.codeGenerator.op_cmp_value(GetTypeSize(type[sp-1],-1),REG_EAX,0);
 
 		//setne al
-		op_setne( REG_EAX );
+		compiler.codeGenerator.op_setne( REG_EAX );
 
 		//and eax,000000FFh
-		op_and_RV(REG_EAX,(int)0xFF);
+		compiler.codeGenerator.op_and_RV(REG_EAX,(int)0xFF);
 
 		//neg
-		op_neg( REG_EAX );
+		compiler.codeGenerator.op_neg( REG_EAX );
 
 		//sbb eax, eax
-		op_sbb_RR( REG_EAX, REG_EAX );
+		compiler.codeGenerator.op_sbb_RR( REG_EAX, REG_EAX );
 
 		//add eax, 1
-		op_add_RV8( REG_EAX, 1 );
+		compiler.codeGenerator.op_add_RV8( REG_EAX, 1 );
 
 		//push eax
-		op_push( REG_EAX );
+		compiler.codeGenerator.op_push( REG_EAX );
 	}
 	else if(type[sp-1]==DEF_INT64||type[sp-1]==DEF_QWORD){
@@ -483,13 +476,17 @@
 
 		//not dword ptr[esp]
-		OpBuffer[obp++]=(char)0xF7;
-		OpBuffer[obp++]=(char)0x14;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.PutOld(
+			(char)0xF7,
+			(char)0x14,
+			(char)0x24
+		);
 
 		//not dword ptr[esp+4]
-		OpBuffer[obp++]=(char)0xF7;
-		OpBuffer[obp++]=(char)0x54;
-		OpBuffer[obp++]=(char)0x24;
-		OpBuffer[obp++]=(char)0x04;
+		compiler.codeGenerator.PutOld(
+			(char)0xF7,
+			(char)0x54,
+			(char)0x24,
+			(char)0x04
+		);
 	}
 	else{
@@ -499,7 +496,9 @@
 
 		//not dword ptr[esp]
-		OpBuffer[obp++]=(char)0xF7;
-		OpBuffer[obp++]=(char)0x14;
-		OpBuffer[obp++]=(char)0x24;
+		compiler.codeGenerator.PutOld(
+			(char)0xF7,
+			(char)0x14,
+			(char)0x24
+		);
 	}
 
