change int to size_t in gen_code.cpp
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 1665da4..c978bd5 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -1,7 +1,7 @@
 #define XBYAK_DONT_READ_LIST
 #include <stdio.h>
 #include <string.h>
-#include "xbyak.h"
+#include "xbyak/xbyak.h"
 #define NUM_OF_ARRAY(x) (sizeof(x) / sizeof(x[0]))
 
 using namespace Xbyak;
@@ -277,7 +277,7 @@
 			{ 0xF4, "pmuludq" },
 			{ 0xFB, "psubq" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x%02X); }\n"
 				, p->name, p->code);
@@ -302,7 +302,7 @@
 			{ 0xE8, B|W , "psubs" },
 			{ 0xD8, B|W , "psubus" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			static const char modTbl[][4] = {
 				"b", "w", "d", "q"
@@ -329,7 +329,7 @@
 			{ 0x70, 4, W|D , "psra" },
 			{ 0x70, 2, W|D|Q, "psrl" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			static const char modTbl[][4] = {
 				"b", "w", "d", "q"
@@ -359,7 +359,7 @@
 			{ 0x70, 0xF3, "pshufhw" },
 			{ 0x70, 0x66, "pshufd" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Mmx& mmx, const Operand& op, uint8 imm8) { opMMX(mmx, op, 0x%02X, 0x%02X, imm8); }\n", p->name, p->code, p->pref);
 		}
@@ -381,7 +381,7 @@
 			{ 0x10, 0x11, 0xF2, "movsd" },
 			{ 0x10, 0x11, 0x66, "movupd" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(mmxTbl6); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(mmxTbl6); i++) {
 			const MmxTbl6 *p = &mmxTbl6[i];
 			printf("void %s(const Xmm& xmm, const Operand& op) { opMMX(xmm, op, 0x%02X, 0x%02X); }\n", p->name, p->code, p->pref);
 			printf("void %s(const Address& addr, const Xmm& xmm) { ", p->name);
@@ -430,9 +430,9 @@
 			{ 0x57, PS|PD     , "xor" },
 			//
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
-			for (int j = 0; j < NUM_OF_ARRAY(sufTbl); j++) {
+			for (size_t j = 0; j < NUM_OF_ARRAY(sufTbl); j++) {
 				if (!(p->mode & (1 << j))) continue;
 				if (p->hasImm) {
 					// don't change uint8 to int because NO is not in byte
@@ -454,7 +454,7 @@
 			{ 0x12, 0  , "movhlps" },
 			{ 0x16, 0  , "movlhps" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Xmm& reg1, const Xmm& reg2) { ", p->name);
 			if (p->pref) printf("db(0x%02X); ", p->pref);
@@ -499,7 +499,7 @@
 			{ 0x16, 0xF3, "movshdup" },
 			{ 0x12, 0xF3, "movsldup" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x%02X, 0x%02X, isXMM_XMMorMEM); }\n", p->name, p->code, p->pref);
 		}
@@ -526,7 +526,7 @@
 			{ 0x2C, 0x66, "cvttpd2pi", "isMMX_XMMorMEM" },
 			{ 0x2C, 0xF2, "cvttsd2si", "isREG32_XMMorMEM" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& reg, const Operand& op) { opGen(reg, op, 0x%02X, 0x%02X, %s); }\n", p->name, p->code, p->pref, p->cond);
 		}
@@ -544,7 +544,7 @@
 			{ 0, "nta", 0x18},
 			{ 2, "wt1", 0x0D},
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void prefetch%s(const Address& addr) { opModM(addr, Reg32(%d), 0x0F, 0x%02X); }\n", p->name, p->ext, p->code);
 		}
@@ -560,7 +560,7 @@
 			{ 0x16, 0x66, "movhpd" },
 			{ 0x12, 0x66, "movlpd" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& op1, const Operand& op2) { opMovXMM(op1, op2, 0x%02X, 0x%02X); }\n", p->name, p->code, p->pref);
 		}
@@ -603,7 +603,7 @@
 			{ 15, "g" },
 		};
 		const char *msg = "//-V524"; // disable warning of PVS-Studio
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void cmov%s(const Reg& reg, const Operand& op) { opModRM(reg, op, op.isREG(16 | i32e), op.isMEM(), 0x0F, 0x40 | %d); }%s\n", p->name, p->ext, msg);
 			printf("void j%s(std::string label, LabelType type = T_AUTO) { opJmp(label, type, 0x%02X, 0x%02X, 0x%02X); }%s\n", p->name, p->ext | 0x70, p->ext | 0x80, 0x0F, msg);
@@ -730,7 +730,7 @@
 			{ 0x28, 5, "sub" },
 			{ 0x30, 6, "xor_" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x%02X); }\n", p->name, p->code);
 			printf("void %s(const Operand& op, uint32 imm) { opRM_I(op, imm, 0x%02X, %d); }\n", p->name, p->code, p->ext);
@@ -746,7 +746,7 @@
 			{ 0x48, 1, "dec" },
 			{ 0x40, 0, "inc" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& op) { opIncDec(op, 0x%02X, %d); }\n", p->name, p->code, p->ext);
 		}
@@ -762,7 +762,7 @@
 			{ 0xb3, 6, "btr" },
 			{ 0xbb, 7, "btc" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& op, const Reg& reg) { opModRM(reg, op, op.isREG(16|32|64) && op.getBit() == reg.getBit(), op.isMEM(), 0x0f, 0x%02X); }\n", p->name, p->code);
 			printf("void %s(const Operand& op, uint8 imm) { opR_ModM(op, 16|32|64, %d, 0x0f, 0xba, NONE, false, 1); db(imm); }\n", p->name, p->ext);
@@ -781,7 +781,7 @@
 			{ 0xF6, 3, "neg" },
 			{ 0xF6, 2, "not_" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			const std::string name = p->name;
 			printf("void %s(const Operand& op) { opR_ModM(op, 0, %d, 0x%02X); }\n", p->name, p->ext, p->code);
@@ -802,7 +802,7 @@
 
 			{ "sal", 4 },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& op, int imm) { opShift(op, imm, %d); }\n", p->name, p->ext);
 			printf("void %s(const Operand& op, const Reg8& _cl) { opShift(op, _cl, %d); }\n", p->name, p->ext);
@@ -816,7 +816,7 @@
 			{ "shld", 0xA4 },
 			{ "shrd", 0xAC },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Operand& op, const Reg& reg, uint8 imm) { opShxd(op, reg, imm, 0x%02X); }\n", p->name, p->code);
 			printf("void %s(const Operand& op, const Reg& reg, const Reg8& _cl) { opShxd(op, reg, 0, 0x%02X, &_cl); }\n", p->name, p->code);
@@ -830,7 +830,7 @@
 			{ "bsf", 0xBC },
 			{ "bsr", 0xBD },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Reg&reg, const Operand& op) { opModRM(reg, op, op.isREG(16 | i32e), op.isMEM(), 0x0F, 0x%02X); }\n", p->name, p->code);
 		}
@@ -844,7 +844,7 @@
 			{ "tzcnt", 0xBC },
 			{ "lzcnt", 0xBD },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Reg&reg, const Operand& op) { opSp1(reg, op, 0xF3, 0x0F, 0x%02X); }\n", p->name, p->code);
 		}
@@ -871,7 +871,7 @@
 			{ 0x1d, "pabsw" },
 			{ 0x1e, "pabsd" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x%02X, 0x66, NONE, 0x38); }\n", p->name, p->code);
 		}
@@ -921,7 +921,7 @@
 			{ 0xdd, "aesenclast" },
 			{ 0xdb, "aesimc" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x%02X, 0x66, isXMM_XMMorMEM, NONE, 0x38); }\n", p->name, p->code);
 		}
@@ -950,7 +950,7 @@
 			{ 0x44, "pclmulqdq" },
 			{ 0xdf, "aeskeygenassist" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x%02X, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }\n", p->name, p->code);
 		}
@@ -965,7 +965,7 @@
 			{ "pclmullqhdq", 0x10 },
 			{ "pclmulhqhdq", 0x11 },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Xmm& xmm, const Operand& op) { pclmulqdq(xmm, op, 0x%02X); }\n", p->name, p->code);
 		}
@@ -983,7 +983,7 @@
 			{ 0xD9, NONE, 5, "fldcw" },
 //			{ 0x9B, 0xD9, 7, "fstcw" }, // not correct order for fstcw [eax] on 64bit OS
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Address& addr) { opModM(addr, Reg32(%d), 0x%02X, 0x%02X); }\n", p->name, p->ext, p->code1, p->code2);
 		}
@@ -997,7 +997,7 @@
 			{ 0x2B, "movntpd" },
 			{ 0xE7, "movntdq" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			// cast xmm register to 16bit register to put 0x66
 			printf("void %s(const Address& addr, const Xmm& reg) { opModM(addr, Reg16(reg.getIdx()), 0x0F, 0x%02X); }\n", p->name, p->code);
@@ -1011,7 +1011,7 @@
 			{ 0xBE, "movsx" },
 			{ 0xB6, "movzx" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Reg& reg, const Operand& op) { opMovxx(reg, op, 0x%02X); }\n", p->name, p->code);
 		}
@@ -1094,7 +1094,7 @@
 			{ 0x00, 0xD8, 0xDC, 5, "fsubr" },
 			{ 0xDE, 0xDA, 0x00, 5, "fisubr" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Address& addr) { opFpuMem(addr, 0x%02X, 0x%02X, 0x%02X, %d, %d); }\n", p->name, p->m16, p->m32, p->m64, p->ext, p->m64ext);
 		}
@@ -1133,7 +1133,7 @@
 			{ 0xD8E8, 0xDCE0, "fsubr" },
 			{ 0x0000, 0xDEE0, "fsubrp" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Fpu& reg1, const Fpu& reg2) { opFpuFpu(reg1, reg2, 0x%04X, 0x%04X); }\n", p->name, p->code1, p->code2);
 			// omit st0 version(like nasm)
@@ -1160,7 +1160,7 @@
 			{ 0xDD, 0xE8, "fucomp" },
 			{ 0xD9, 0xC8, "fxch" },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void %s(const Fpu& reg) { opFpu(reg, 0x%02X, 0x%02X); }\n", p->name, p->code1, p->code2);
 		}
@@ -1183,7 +1183,7 @@
 			{ 0x56, "or", true },
 			{ 0x57, "xor", true },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			printf("void v%spd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_66 | T_EW1 | T_YMM | T_EVEX | T_ER_Z | T_B64, 0x%02X); }\n", p->name, p->code);
 			printf("void v%sps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_0F | T_EW0 | T_YMM | T_EVEX | T_ER_Z | T_B32, 0x%02X); }\n", p->name, p->code);
@@ -1343,7 +1343,7 @@
 			{ 0x16, "vpermps", T_66 | T_0F38 | T_W0 | T_YMM | T_EVEX | T_EW0 | T_B32 },
 			{ 0x16, "vpermpd", T_66 | T_0F38 | T_MUST_EVEX | T_EW1 | T_YMM | T_B64 },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl& p = tbl[i];
 			std::string type = type2String(p.type);
 			printf("void %s(const Ymm& y1, const Ymm& y2, const Operand& op) { opAVX_X_X_XM(y1, y2, op, %s, 0x%02X); }\n", p.name, type.c_str(), p.code);
@@ -1359,7 +1359,7 @@
 			{ 0x00, "vpermq", T_0F3A | T_66 | T_W1 | T_YMM | T_EVEX | T_EW1 | T_B64 },
 			{ 0x01, "vpermpd", T_0F3A | T_66 | T_W1 | T_YMM | T_EVEX | T_EW1 | T_B64 },
 		};
-		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl& p = tbl[i];
 			std::string type = type2String(p.type);
 			printf("void %s(const Ymm& y, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(y, op, %s, 0x%02X, imm); }\n", p.name, type.c_str(), p.code);