Changeset 931
- Timestamp:
- 02/21/07 15:11:35 (2 years ago)
- Files:
-
- libemu/trunk/src/functions/xor.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libemu/trunk/src/functions/xor.c
r930 r931 288 288 int32_t instr_group_1_81_xor(struct emu_cpu *c, struct instruction *i) 289 289 { 290 291 /* 81 /6 iw 292 * r/m16 XOR imm16 293 * XOR r/m16,imm16 294 */ 295 296 /* 81 /6 id 297 * r/m32 XOR imm32 298 * XOR r/m32,imm32 299 */ 300 290 if ( i->prefixes & PREFIX_OPSIZE ) 291 { 292 /* 81 /6 iw 293 * r/m16 XOR imm16 294 * XOR r/m16,imm16 295 */ 296 INSTR_CALC_AND_SET_FLAGS(16, 297 c, 298 *i->imm16, 299 *c->reg16[i->modrm.opc], 300 *c->reg16[i->modrm.opc], 301 ^) 302 303 } else 304 { 305 /* 81 /6 id 306 * r/m32 XOR imm32 307 * XOR r/m32,imm32 308 */ 309 INSTR_CALC_AND_SET_FLAGS(32, 310 c, 311 i->imm, 312 c->reg[i->modrm.opc], 313 c->reg[i->modrm.opc], 314 ^) 315 316 } 301 317 return 0; 302 318 } … … 305 321 { 306 322 307 /* 83 /6 ib 308 * r/m16 XOR imm8 (sign-extended) 309 * XOR r/m16,imm8 310 */ 311 312 /* 83 /6 ib 313 * r/m32 XOR imm8 (sign-extended) 314 * XOR r/m32,imm8 315 */ 316 317 return 0; 318 } 323 if ( i->prefixes & PREFIX_OPSIZE ) 324 { 325 /* 83 /6 ib 326 * r/m16 XOR imm8 (sign-extended) 327 * XOR r/m16,imm8 328 */ 329 int16_t sexd = i->disp; 330 INSTR_CALC_AND_SET_FLAGS(16, 331 c, 332 sexd, 333 *c->reg16[i->modrm.opc], 334 *c->reg16[i->modrm.opc], 335 ^) 336 337 } else 338 { 339 340 /* 83 /6 ib 341 * r/m32 XOR imm8 (sign-extended) 342 * XOR r/m32,imm8 343 */ 344 int32_t sexd = i->disp; 345 INSTR_CALC_AND_SET_FLAGS(32, 346 c, 347 sexd, 348 c->reg[i->modrm.opc], 349 c->reg[i->modrm.opc], 350 ^) 351 352 } 353 return 0; 354 } 355
