Index: trunk/abdev/BasicCompiler32/NumOpe_Relation.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/NumOpe_Relation.cpp	(revision 238)
+++ trunk/abdev/BasicCompiler32/NumOpe_Relation.cpp	(revision 240)
@@ -329,6 +329,5 @@
 
 		//je 2（次のxorを飛び越す）
-		OpBuffer[obp++]=(char)0x74;
-		OpBuffer[obp++]=(char)0x02;
+		compiler.codeGenerator.op_je( 2 );
 
 		//xor ecx,ecx
@@ -342,7 +341,4 @@
 		// 64ビット整数演算
 		////////////////////
-		int TrueSchedule,
-			FalseSchedule1,
-			FalseSchedule2;
 
 		// 第1項 >= 第2項
@@ -355,9 +351,10 @@
 		compiler.codeGenerator.op_cmp_RR( REG_EDX, REG_ECX );
 
+		CodeGenerator::PertialSchedule *pFalsePertialSchedule1;
 		if(IsSignedType(AnswerType)){
 			//符号あり演算
 
 			//jl FalseSchedule1（偽へジャンプ）
-			OpBuffer[obp++]=(char)0x7C;
+			pFalsePertialSchedule1 = compiler.codeGenerator.op_jl( 0, sizeof(char), true );
 		}
 		else{
@@ -365,14 +362,13 @@
 
 			//jb FalseSchedule1（偽へジャンプ）
-			OpBuffer[obp++]=(char)0x72;
-		}
-		FalseSchedule1=obp;
-		obp++;
-
+			pFalsePertialSchedule1 = compiler.codeGenerator.op_jb( 0, sizeof(char), true );
+		}
+
+		CodeGenerator::PertialSchedule *pTruePertialSchedule;
 		if(IsSignedType(AnswerType)){
 			//符号あり演算
 
 			//jg TrueSchedule（真へジャンプ）
-			OpBuffer[obp++]=(char)0x7F;
+			pTruePertialSchedule = compiler.codeGenerator.op_jg( 0, sizeof(char), true );
 		}
 		else{
@@ -380,8 +376,6 @@
 
 			//ja TrueSchedule（真へジャンプ）
-			OpBuffer[obp++]=(char)0x77;
-		}
-		TrueSchedule=obp;
-		obp++;
+			pTruePertialSchedule = compiler.codeGenerator.op_ja( 0, sizeof(char), true );
+		}
 
 		//cmp eax,ebx
@@ -389,10 +383,8 @@
 
 		//jb FalseSchedule2（偽へジャンプ）
-		OpBuffer[obp++]=(char)0x72;
-		FalseSchedule2=obp;
-		obp++;
+		CodeGenerator::PertialSchedule *pFalsePertialSchedule2 = compiler.codeGenerator.op_jb( 0, sizeof(char), true );
 
 		//TrueScheduleのジャンプ先の設定
-		OpBuffer[TrueSchedule]=obp-(TrueSchedule+1);
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pTruePertialSchedule );
 
 		//mov eax,1
@@ -400,10 +392,9 @@
 
 		//jmp 2（演算終了位置へジャンプ）
-		OpBuffer[obp++]=(char)0xEB;
-		OpBuffer[obp++]=(char)0x02;
+		compiler.codeGenerator.op_jmp( 2 );
 
 		//FalseScheduleのジャンプ先の設定
-		OpBuffer[FalseSchedule1]=obp-(FalseSchedule1+1);
-		OpBuffer[FalseSchedule2]=obp-(FalseSchedule2+1);
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pFalsePertialSchedule1 );
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pFalsePertialSchedule2 );
 
 		//xor eax,eax（eaxを0にする）
@@ -440,6 +431,5 @@
 
 			//jge 2（次のxorを飛び越す）符号有り
-			OpBuffer[obp++]=(char)0x7D;
-			OpBuffer[obp++]=(char)0x02;
+			compiler.codeGenerator.op_jge( 2 );
 		}
 		else{
@@ -447,6 +437,5 @@
 
 			//jae 2（次のxorを飛び越す）
-			OpBuffer[obp++]=(char)0x73;
-			OpBuffer[obp++]=(char)0x02;
+			compiler.codeGenerator.op_jae( 2 );
 		}
 
@@ -552,6 +541,5 @@
 
 		//jne 2
-		OpBuffer[obp++]=(char)0x75;
-		OpBuffer[obp++]=(char)0x02;
+		compiler.codeGenerator.op_jne( 2 );
 
 		//xor ecx,ecx
@@ -565,7 +553,4 @@
 		// 64ビット整数演算
 		////////////////////
-		int TrueSchedule1,
-			TrueSchedule2,
-			FalseSchedule;
 
 		// 第1項 < 第2項
@@ -578,9 +563,10 @@
 		compiler.codeGenerator.op_cmp_RR( REG_EDX, REG_ECX );
 
+		CodeGenerator::PertialSchedule *pTruePertialSchedule1;
 		if(IsSignedType(AnswerType)){
 			//符号あり演算
 
 			//jl TrueSchedule1（真へジャンプ）
-			OpBuffer[obp++]=(char)0x7C;
+			pTruePertialSchedule1 = compiler.codeGenerator.op_jl( 0, sizeof(char), true );
 		}
 		else{
@@ -588,14 +574,13 @@
 
 			//jb TrueSchedule1（真へジャンプ）
-			OpBuffer[obp++]=(char)0x72;
-		}
-		TrueSchedule1=obp;
-		obp++;
-
+			pTruePertialSchedule1 = compiler.codeGenerator.op_jb( 0, sizeof(char), true );
+		}
+
+		CodeGenerator::PertialSchedule *pFalsePertialSchedule;
 		if(IsSignedType(AnswerType)){
 			//符号あり演算
 
 			//jg FalseSchedule（偽へジャンプ）
-			OpBuffer[obp++]=(char)0x7F;
+			pFalsePertialSchedule = compiler.codeGenerator.op_jg( 0, sizeof(char), true );
 		}
 		else{
@@ -603,8 +588,6 @@
 
 			//ja FalseSchedule（偽へジャンプ）
-			OpBuffer[obp++]=(char)0x77;
-		}
-		FalseSchedule=obp;
-		obp++;
+			pFalsePertialSchedule = compiler.codeGenerator.op_ja( 0, sizeof(char), true );
+		}
 
 		//cmp eax,ebx
@@ -612,10 +595,8 @@
 
 		//jb TrueSchedule2（真へジャンプ）
-		OpBuffer[obp++]=(char)0x72;
-		TrueSchedule2=obp;
-		obp++;
+		CodeGenerator::PertialSchedule *pTruePertialSchedule2 = compiler.codeGenerator.op_jb( 0, sizeof(char), true );
 
 		//FalseScheduleのジャンプ先の設定
-		OpBuffer[FalseSchedule]=obp-(FalseSchedule+1);
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pFalsePertialSchedule );
 
 		//xor eax,eax（eaxを0にする）
@@ -623,10 +604,9 @@
 
 		//jmp 5（演算終了位置へジャンプ）
-		OpBuffer[obp++]=(char)0xEB;
-		OpBuffer[obp++]=(char)0x05;
+		compiler.codeGenerator.op_jmp( 5 );
 
 		//TrueScheduleのジャンプ先の設定
-		OpBuffer[TrueSchedule1]=obp-(TrueSchedule1+1);
-		OpBuffer[TrueSchedule2]=obp-(TrueSchedule2+1);
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pTruePertialSchedule1 );
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pTruePertialSchedule2 );
 
 		//mov eax,1
@@ -663,6 +643,5 @@
 
 			//jl 2（次のxorを飛び越す）
-			OpBuffer[obp++]=(char)0x7C;
-			OpBuffer[obp++]=(char)0x02;
+			compiler.codeGenerator.op_jl( 2 );
 		}
 		else{
@@ -670,6 +649,5 @@
 
 			//jb 2（次のxorを飛び越す）
-			OpBuffer[obp++]=(char)0x72;
-			OpBuffer[obp++]=(char)0x02;
+			compiler.codeGenerator.op_jb( 2 );
 		}
 
@@ -771,6 +749,5 @@
 
 		//je 2（次のxorを飛び越す）
-		OpBuffer[obp++]=(char)0x74;
-		OpBuffer[obp++]=(char)0x02;
+		compiler.codeGenerator.op_je( 2 );
 
 		//xor ecx,ecx
@@ -784,7 +761,4 @@
 		// 64ビット整数演算
 		////////////////////
-		int FalseSchedule,
-			TrueSchedule1,
-			TrueSchedule2;
 
 		// 第1項 > 第2項
@@ -797,9 +771,10 @@
 		compiler.codeGenerator.op_cmp_RR( REG_EDX, REG_ECX );
 
+		CodeGenerator::PertialSchedule *pTruePertialSchedule1;
 		if(IsSignedType(AnswerType)){
 			//符号有り
 
 			//jg TrueSchedule1（真へジャンプ）
-			OpBuffer[obp++]=(char)0x7F;
+			pTruePertialSchedule1 = compiler.codeGenerator.op_jg( 0, sizeof(char), true );
 		}
 		else{
@@ -807,14 +782,13 @@
 
 			//ja TrueSchedule1（真へジャンプ）
-			OpBuffer[obp++]=(char)0x77;
-		}
-		TrueSchedule1=obp;
-		obp++;
-
+			pTruePertialSchedule1 = compiler.codeGenerator.op_ja( 0, sizeof(char), true );
+		}
+
+		CodeGenerator::PertialSchedule *pFalsePertialSchedule;
 		if(IsSignedType(AnswerType)){
 			//符号有り
 
 			//jl FalseSchedule（偽へジャンプ）
-			OpBuffer[obp++]=(char)0x7C;
+			pFalsePertialSchedule = compiler.codeGenerator.op_jl( 0, sizeof(char), true );
 		}
 		else{
@@ -822,8 +796,6 @@
 
 			//jb FalseSchedule（偽へジャンプ）
-			OpBuffer[obp++]=(char)0x72;
-		}
-		FalseSchedule=obp;
-		obp++;
+			pFalsePertialSchedule = compiler.codeGenerator.op_jb( 0, sizeof(char), true );
+		}
 
 		//cmp eax,ebx
@@ -831,10 +803,8 @@
 
 		//ja TrueSchedule2（真へジャンプ）
-		OpBuffer[obp++]=(char)0x77;
-		TrueSchedule2=obp;
-		obp++;
+		CodeGenerator::PertialSchedule *pTruePertialSchedule2 = compiler.codeGenerator.op_ja( 0, sizeof(char), true );
 
 		//FalseScheduleのジャンプ先の設定
-		OpBuffer[FalseSchedule]=obp-(FalseSchedule+1);
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pFalsePertialSchedule );
 
 		//xor eax,eax（eaxを0にする）
@@ -842,10 +812,9 @@
 
 		//jmp 5（演算終了位置へジャンプ）
-		OpBuffer[obp++]=(char)0xEB;
-		OpBuffer[obp++]=(char)0x05;
+		compiler.codeGenerator.op_jmp( 5 );
 
 		//TrueScheduleのジャンプ先の設定
-		OpBuffer[TrueSchedule1]=obp-(TrueSchedule1+1);
-		OpBuffer[TrueSchedule2]=obp-(TrueSchedule2+1);
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pTruePertialSchedule1 );
+		compiler.codeGenerator.opfix_JmpPertialSchedule( pTruePertialSchedule2 );
 
 		//mov eax,1
@@ -880,11 +849,9 @@
 		if(IsSignedType(AnswerType)){
 			//jg 2（次のxorを飛び越す）
-			OpBuffer[obp++]=(char)0x7F;
-			OpBuffer[obp++]=(char)0x02;
+			compiler.codeGenerator.op_jg( 2 );
 		}
 		else{
 			//ja 2（次のxorを飛び越す）
-			OpBuffer[obp++]=(char)0x77;
-			OpBuffer[obp++]=(char)0x02;
+			compiler.codeGenerator.op_ja( 2 );
 		}
 
