one_byte_opcodes.isa (4730:77e3e9b15e7e) one_byte_opcodes.isa (4732:9fdd1a5ab692)
1// Copyright (c) 2007 The Hewlett-Packard Development Company
2// All rights reserved.
3//
4// Redistribution and use of this software in source and binary forms,
5// with or without modification, are permitted provided that the
6// following conditions are met:
7//
8// The software must be used only for Non-Commercial Use which means any

--- 292 unchanged lines hidden (view full) ---

301 0x0: Inst::NOP(); //XXX repe makes this a "pause"
302 default: xchg_B_rAX();
303 }
304 0x13: decode OPCODE_OP_BOTTOM3 {
305 0x0: cbw_or_cwde_or_cdqe_rAX();
306 0x1: cwd_or_cdq_or_cqo_rAX_rDX();
307 0x2: decode MODE_SUBMODE {
308 0x0: Inst::UD2();
1// Copyright (c) 2007 The Hewlett-Packard Development Company
2// All rights reserved.
3//
4// Redistribution and use of this software in source and binary forms,
5// with or without modification, are permitted provided that the
6// following conditions are met:
7//
8// The software must be used only for Non-Commercial Use which means any

--- 292 unchanged lines hidden (view full) ---

301 0x0: Inst::NOP(); //XXX repe makes this a "pause"
302 default: xchg_B_rAX();
303 }
304 0x13: decode OPCODE_OP_BOTTOM3 {
305 0x0: cbw_or_cwde_or_cdqe_rAX();
306 0x1: cwd_or_cdq_or_cqo_rAX_rDX();
307 0x2: decode MODE_SUBMODE {
308 0x0: Inst::UD2();
309 default: call_Ap();
309 default: call_far_Ap();
310 }
311 0x3: fwait(); //aka wait
312 0x4: pushf_Fv();
313 0x5: popf_Fv();
314 //Both of these should be illegal only if CPUID.AHF64=0,
315 //according to sandpile.org
316 0x6: decode MODE_SUBMODE {
317 0x0: Inst::UD2();

--- 33 unchanged lines hidden (view full) ---

351 0x5: mov_Ch_Ib();
352 0x6: mov_Dh_Ib();
353 0x7: mov_Bh_Ib();
354 }
355 0x17: Inst::MOV(B,Iv);
356 0x18: decode OPCODE_OP_BOTTOM3 {
357 //0x0: group2_Eb_Ib();
358 0x0: decode MODRM_REG {
310 }
311 0x3: fwait(); //aka wait
312 0x4: pushf_Fv();
313 0x5: popf_Fv();
314 //Both of these should be illegal only if CPUID.AHF64=0,
315 //according to sandpile.org
316 0x6: decode MODE_SUBMODE {
317 0x0: Inst::UD2();

--- 33 unchanged lines hidden (view full) ---

351 0x5: mov_Ch_Ib();
352 0x6: mov_Dh_Ib();
353 0x7: mov_Bh_Ib();
354 }
355 0x17: Inst::MOV(B,Iv);
356 0x18: decode OPCODE_OP_BOTTOM3 {
357 //0x0: group2_Eb_Ib();
358 0x0: decode MODRM_REG {
359 0x0: rol_Eb_Ib();
360 0x1: ror_Eb_Ib();
359 0x0: Inst::ROL(Eb,Ib);
360 0x1: Inst::ROR(Eb,Ib);
361 0x2: rcl_Eb_Ib();
362 0x3: rcr_Eb_Ib();
363 0x4: Inst::SAL(Eb,Ib);
361 0x2: rcl_Eb_Ib();
362 0x3: rcr_Eb_Ib();
363 0x4: Inst::SAL(Eb,Ib);
364 0x5: shr_Eb_Ib();
364 0x5: Inst::SHR(Eb,Ib);
365 0x6: Inst::SAL(Eb,Ib);
365 0x6: Inst::SAL(Eb,Ib);
366 0x7: sar_Eb_Ib();
366 0x7: Inst::SAR(Eb,Ib);
367 }
368 //0x1: group2_Ev_Ib();
369 0x1: decode MODRM_REG {
367 }
368 //0x1: group2_Ev_Ib();
369 0x1: decode MODRM_REG {
370 0x0: rol_Ev_Ib();
371 0x1: ror_Ev_Ib();
370 0x0: Inst::ROL(Ev,Ib);
371 0x1: Inst::ROR(Ev,Ib);
372 0x2: rcl_Ev_Ib();
373 0x3: rcr_Ev_Ib();
374 0x4: Inst::SAL(Ev,Ib);
372 0x2: rcl_Ev_Ib();
373 0x3: rcr_Ev_Ib();
374 0x4: Inst::SAL(Ev,Ib);
375 0x5: shr_Ev_Ib();
375 0x5: Inst::SHR(Ev,Ib);
376 0x6: Inst::SAL(Ev,Ib);
376 0x6: Inst::SAL(Ev,Ib);
377 0x7: sar_Ev_Ib();
377 0x7: Inst::SAR(Ev,Ib);
378 }
379 0x2: ret_near_Iw();
380 0x3: Inst::RET_NEAR();
381 0x4: decode MODE_SUBMODE {
382 0x0: Inst::UD2();
383 default: les_Gz_Mp();
384 }
385 0x5: decode MODE_SUBMODE {

--- 61 unchanged lines hidden (view full) ---

447 0x6: out_Ib_Al();
448 0x7: out_Ib_eAX();
449 }
450 0x1D: decode OPCODE_OP_BOTTOM3 {
451 0x0: Inst::CALL_NEAR(Jz);
452 0x1: Inst::JMP(Jz);
453 0x2: decode MODE_SUBMODE {
454 0x0: Inst::UD2();
378 }
379 0x2: ret_near_Iw();
380 0x3: Inst::RET_NEAR();
381 0x4: decode MODE_SUBMODE {
382 0x0: Inst::UD2();
383 default: les_Gz_Mp();
384 }
385 0x5: decode MODE_SUBMODE {

--- 61 unchanged lines hidden (view full) ---

447 0x6: out_Ib_Al();
448 0x7: out_Ib_eAX();
449 }
450 0x1D: decode OPCODE_OP_BOTTOM3 {
451 0x0: Inst::CALL_NEAR(Jz);
452 0x1: Inst::JMP(Jz);
453 0x2: decode MODE_SUBMODE {
454 0x0: Inst::UD2();
455 default: jmp_Ap();
455 default: jmp_far_Ap();
456 }
457 0x3: Inst::JMP(Jb);
458 0x4: in_Al_Dx();
459 0x5: in_eAX_Dx();
460 0x6: out_Dx_Al();
461 0x7: out_Dx_eAX();
462 }
463 0x1E: decode OPCODE_OP_BOTTOM3 {

--- 11 unchanged lines hidden (view full) ---

475 }
476 0x1F: decode OPCODE_OP_BOTTOM3 {
477 0x0: clc();
478 0x1: stc();
479 0x2: cli();
480 0x3: sti();
481 0x4: cld();
482 0x5: std();
456 }
457 0x3: Inst::JMP(Jb);
458 0x4: in_Al_Dx();
459 0x5: in_eAX_Dx();
460 0x6: out_Dx_Al();
461 0x7: out_Dx_eAX();
462 }
463 0x1E: decode OPCODE_OP_BOTTOM3 {

--- 11 unchanged lines hidden (view full) ---

475 }
476 0x1F: decode OPCODE_OP_BOTTOM3 {
477 0x0: clc();
478 0x1: stc();
479 0x2: cli();
480 0x3: sti();
481 0x4: cld();
482 0x5: std();
483 //0x6: group4();
484 0x6: decode MODRM_REG {
485 0x0: Inst::INC(Eb);
486 0x1: Inst::DEC(Eb);
487 default: Inst::UD2();
483 format Inst {
484 //0x6: group4();
485 0x6: decode MODRM_REG {
486 0x0: INC(Eb);
487 0x1: DEC(Eb);
488 default: UD2();
489 }
490 //0x7: group5();
491 0x7: decode MODRM_REG {
492 0x0: INC(Ev);
493 0x1: DEC(Ev);
494 0x2: CALL_NEAR(Ev);
495 0x3: WarnUnimpl::call_far_Mp();
496 0x4: JMP(Ev);
497 0x5: WarnUnimpl::jmp_far_Mp();
498 0x6: PUSH(Ev);
499 0x7: UD2();
500 }
488 }
501 }
489 //0x7: group5();
490 0x7: decode MODRM_REG {
491 0x0: Inst::INC(Ev);
492 0x1: Inst::DEC(Ev);
493 0x2: call_Ev();
494 0x3: call_Mp();
495 0x4: jmp_Ev();
496 0x5: jmp_Mp();
497 0x6: push_Ev();
498 0x7: Inst::UD2();
499 }
500 }
501 }
502 default: FailUnimpl::oneByteOps();
503}
502 }
503 }
504 default: FailUnimpl::oneByteOps();
505}