--- np2/i386c/ia32/instructions/shift_rotate.c 2003/12/08 00:55:32 1.1 +++ np2/i386c/ia32/instructions/shift_rotate.c 2004/02/19 03:04:02 1.3 @@ -1,4 +1,4 @@ -/* $Id: shift_rotate.c,v 1.1 2003/12/08 00:55:32 yui Exp $ */ +/* $Id: shift_rotate.c,v 1.3 2004/02/19 03:04:02 yui Exp $ */ /* * Copyright (c) 2003 NONAKA Kimihiro @@ -58,7 +58,7 @@ SAR_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_SAR1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -78,7 +78,7 @@ SAR_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SAR1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -109,7 +109,7 @@ SAR_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_SARCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -119,7 +119,7 @@ SAR_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_SARCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -129,7 +129,7 @@ SAR_EwCL(WORD *out, BYTE cl) src = *out; WORD_SARCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -139,7 +139,7 @@ SAR_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SARCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -182,7 +182,7 @@ SHR_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_SHR1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -202,7 +202,7 @@ SHR_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHR1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -233,7 +233,7 @@ SHR_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_SHRCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -243,7 +243,7 @@ SHR_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_SHRCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -253,7 +253,7 @@ SHR_EwCL(WORD *out, BYTE cl) src = *out; WORD_SHRCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -263,7 +263,7 @@ SHR_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHRCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -306,7 +306,7 @@ SHL_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_SHL1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -326,7 +326,7 @@ SHL_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHL1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -357,7 +357,7 @@ SHL_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_SHLCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -367,7 +367,7 @@ SHL_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_SHLCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -377,7 +377,7 @@ SHL_EwCL(WORD *out, BYTE cl) src = *out; WORD_SHLCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -387,7 +387,7 @@ SHL_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHLCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -421,17 +421,18 @@ SHRD_EwGwIb(void) BYTE cl; PREPART_EA_REG16(op, src); - GET_PCBYTE(cl); if (op >= 0xc0) { out = reg16_b20[op]; + GET_PCBYTE(cl); dst = *out; WORD_SHRD(dst, src, cl); - *out = dst; + *out = (WORD)dst; } else { madr = calc_ea_dst(op); + GET_PCBYTE(cl); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHRD(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } } @@ -443,14 +444,15 @@ SHRD_EdGdIb(void) BYTE cl; PREPART_EA_REG32(op, src); - GET_PCBYTE(cl); if (op >= 0xc0) { out = reg32_b20[op]; + GET_PCBYTE(cl); dst = *out; DWORD_SHRD(dst, src, cl); *out = dst; } else { madr = calc_ea_dst(op); + GET_PCBYTE(cl); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); DWORD_SHRD(dst, src, cl); cpu_vmemorywrite_d(CPU_INST_SEGREG_INDEX, madr, dst); @@ -470,12 +472,12 @@ SHRD_EwGwCL(void) out = reg16_b20[op]; dst = *out; WORD_SHRD(dst, src, cl); - *out = dst; + *out = (WORD)dst; } else { madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHRD(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } } @@ -512,17 +514,18 @@ SHLD_EwGwIb(void) BYTE cl; PREPART_EA_REG16(op, src); - GET_PCBYTE(cl); if (op >= 0xc0) { out = reg16_b20[op]; + GET_PCBYTE(cl); dst = *out; WORD_SHLD(dst, src, cl); - *out = dst; + *out = (WORD)dst; } else { madr = calc_ea_dst(op); + GET_PCBYTE(cl); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHLD(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } } @@ -534,14 +537,15 @@ SHLD_EdGdIb(void) BYTE cl; PREPART_EA_REG32(op, src); - GET_PCBYTE(cl); if (op >= 0xc0) { out = reg32_b20[op]; + GET_PCBYTE(cl); dst = *out; DWORD_SHLD(dst, src, cl); *out = dst; } else { madr = calc_ea_dst(op); + GET_PCBYTE(cl); dst = cpu_vmemoryread_d(CPU_INST_SEGREG_INDEX, madr); DWORD_SHLD(dst, src, cl); cpu_vmemorywrite_d(CPU_INST_SEGREG_INDEX, madr, dst); @@ -561,12 +565,12 @@ SHLD_EwGwCL(void) out = reg16_b20[op]; dst = *out; WORD_SHLD(dst, src, cl); - *out = dst; + *out = (WORD)dst; } else { madr = calc_ea_dst(op); dst = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_SHLD(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } } @@ -615,7 +619,7 @@ ROR_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_ROR1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -635,7 +639,7 @@ ROR_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_ROR1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -666,7 +670,7 @@ ROR_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_RORCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -676,7 +680,7 @@ ROR_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_RORCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -686,7 +690,7 @@ ROR_EwCL(WORD *out, BYTE cl) src = *out; WORD_RORCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -696,7 +700,7 @@ ROR_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_RORCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -739,7 +743,7 @@ ROL_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_ROL1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -759,7 +763,7 @@ ROL_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_ROL1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -790,7 +794,7 @@ ROL_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_ROLCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -800,7 +804,7 @@ ROL_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_ROLCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -810,7 +814,7 @@ ROL_EwCL(WORD *out, BYTE cl) src = *out; WORD_ROLCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -820,7 +824,7 @@ ROL_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_ROLCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -863,7 +867,7 @@ RCR_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_RCR1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -883,7 +887,7 @@ RCR_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_RCR1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -914,7 +918,7 @@ RCR_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_RCRCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -924,7 +928,7 @@ RCR_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_RCRCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -934,7 +938,7 @@ RCR_EwCL(WORD *out, BYTE cl) src = *out; WORD_RCRCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -944,7 +948,7 @@ RCR_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_RCRCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -987,7 +991,7 @@ RCL_Eb_ext(DWORD madr) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_RCL1(dst, src); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -1007,7 +1011,7 @@ RCL_Ew_ext(DWORD madr) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_RCL1(dst, src); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void @@ -1038,7 +1042,7 @@ RCL_EbCL(BYTE *out, BYTE cl) src = *out; BYTE_RCLCL(dst, src, cl); - *out = dst; + *out = (BYTE)dst; } void @@ -1048,7 +1052,7 @@ RCL_EbCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread(CPU_INST_SEGREG_INDEX, madr); BYTE_RCLCL(dst, src, cl); - cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite(CPU_INST_SEGREG_INDEX, madr, (BYTE)dst); } void @@ -1058,7 +1062,7 @@ RCL_EwCL(WORD *out, BYTE cl) src = *out; WORD_RCLCL(dst, src, cl); - *out = dst; + *out = (WORD)dst; } void @@ -1068,7 +1072,7 @@ RCL_EwCL_ext(DWORD madr, BYTE cl) src = cpu_vmemoryread_w(CPU_INST_SEGREG_INDEX, madr); WORD_RCLCL(dst, src, cl); - cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, dst); + cpu_vmemorywrite_w(CPU_INST_SEGREG_INDEX, madr, (WORD)dst); } void