Volume 3 General-Purpose and System Instructions (794097), страница 56
Текст из файла (страница 56)
In bothtables, the rows show the full range (0–Fh) of the high nibble, and the columns show the specifiedrange of the low nibble.340Opcode and Operand Encodings24594—Rev. 3.13—July 2007AMD64 TechnologyTable A-1. One-Byte Opcodes, Low Nibble 0–7hNibble1012345012Eb, GbEv, GvGb, EbEb, GbEv, GvGb, Eb5Gv, EvAL, IbrAX, IzGv, EvAL, IbrAX, IzANDEb, GbEv, GvGb, EbEb, GbEv, GvGv, EvGb, Eb67PUSHPOPES3ES3PUSHPOPSS3SS36DAA3seg SS6AAA3eDIseg ESAL, IbrAX, IzXORGv, EvAL, IbrAX, IzeSPeBPeSIrSP/r12rBP/r13rSI/r14rDI/r15INC5eAXeCXeDXeBXPUSHrAX/r8PUSHA/D384ADCrCX/r9rDX/r10rBX/r11POPA/D3BOUND 3Gv, MaARPL3Ew, Gw673ADDseg FSseg GSoperand sizeaddresssizeJNBEMOVSXD4Gv, EdJOJNOJBJNBJZJNZJBEJbJbJbJbJbJbJbGroup 12Eb, IbEb, Ib3Ev, IzJbTESTEv, IbXCHGEb, GbEv, GvEb, GbEv, GvrSP/r12, rAXrBP/r13, rAXrSI/r14, rAXrDI/r15, rAXMOVSBMOVSW/D/QCMPSBCMPSW/D/QYb, XbYv, XvXb, YbXv, YvAH, Ibr12b, IbCH, Ibr13b, IbDH, Ibr14b, IbBH, Ibr15b, IbLES3LDS3Gz, MpGz, MpEb, IbEv, IzAAM3AAD3SALC3XLATIb, ALXCHG9Ar8, rAXNOP,PAUSErCX/r9, rAXAL, ObrAX, OvrDX/r10, rAXrBX/r11, rAXMOVOb, ALOv, rAXMOVBCDEFAL, Ibr8b, IbCL, Ibr9b, IbDL, Ibr10b, IbGroup 22Eb, IbBL, Ibr11b, IbRET nearEv, IbIwGroup 22Eb, 1Ev, 1Eb, CLEv, CLLOOPNE/NZLOOPE/ZLOOPJrCXZJbJbJbJbAL, IbeAX, IbLOCK:INT1REPNE:REP:HLTCMCICE BkptGroup 112INOUTIb, eAXGroup 32REPE:Notes:1.
Rows in this table show the high opcode nibble, columns show the low opcode nibble.2. An opcode extension is specified in bits 5–3 of the ModRM byte. See “ModRM Extensions to One-Byte and TwoByte Opcodes” on page 348 for details.3. Invalid in 64-bit mode.4.
Valid only in 64-bit mode.5. Used as REX prefixes in 64-bit mode.6. This is a null prefix in 64-bit mode.Opcode and Operand Encodings341AMD64 Technology24594—Rev. 3.13—July 2007Table A-2. One-Byte Opcodes, Low Nibble 8–FhNibble10123456789A89ABCDOREb, GbEv, GvGb, EbGv, EvAL, IbrAX, IzSBBEb, GbEv, GvGb, EbGv, EvAL, IbrAX, IzSUBEb, GbEv, GvEv, GvF2-byteCS3opcodesPUSHPOPDS3Gb, EbGv, EvAL, IbGb, EbGv, EvDS36DAS3seg DS6AAS3eSIeDIseg CSrAX, IzCMPEb, GbEPUSHAL, IbrAX, IzeSPeBPDEC5eAXeCXeDXeBXPOPrAX/r8rCX/r9rDX/r10rBX/r11rSP/r12rBP/r13rSI/r14rDI/r15PUSHIMULPUSHIMULINSBINSW/DOUTSBOUTSW/DIzGv, Ev, IzIbGv, Ev, IbYb, DXYz, DXDX, XbDX, XzJSJNSJPJNPJLJNLJLEJNLEJbJbJbJbJbJbJbJbLEAMOVGroup 1a2MOVEb, GbEv, GvGb, EbGv, EvMw/Rv, SwGv, MSw, EwEvCBW, CWDECWD, CDQ,CALL3WAITPUSHF/D/QPOPF/D/QSAHFLAHFCDQECQOTESTAL, IbrAX, IzApFWAITFvFvSTOSBSTOSW/D/QLODSBLODSW/D/QSCASBSCASW/D/QYb, ALYv, rAXAL, XbrAX, XvAL, YbrAX, YvrSP, Ivr12, IvrBP, Ivr13, IvrSI, Ivr14, IvrDI, Ivr15, IvINT3INTINTO3IRET, IRETDMOVBCrAX, Ivr8, IvrCX, Ivr9, IvENTERLEAVEIw, IbrDX, Ivr10, IvRET farIwFIbIRETQx87DErBX, Ivr11, Ivsee Table A-10 on page 355CALLJMPINOUTJzJzAp3JbAL, DXeAX, DXDX, ALDX, eAXCLCSTCCLISTICLDSTDGroup 42Group 52EbNote:1.
Rows in this table show the high opcode nibble, columns show the low opcode nibble.2. An opcode extension is specified in bits 5–3 of the ModRM byte. See “ModRM Extensions to One-Byte and TwoByte Opcodes” on page 348 for details.3. Invalid in 64-bit mode.4.
Valid only in 64-bit mode.5. Used as REX prefixes in 64-bit mode.6. This is a null prefix in 64-bit mode.A.2.2 Two-Byte OpcodesAll two-byte opcodes have 0Fh as their first byte. Table A-3 below shows the second byte of the twobyte opcodes in which the second byte’s low nibble is in the range 0–7h. Table A-4 on page 345 showsthose opcodes in which the second byte’s low nibble is in the range 8–Fh. In both tables, the rows showthe full range (0–Fh) of the high nibble, and the columns show the low nibble of the opcode. The left-342Opcode and Operand Encodings24594—Rev.
3.13—July 2007AMD64 Technologymost column shows special-purpose prefix bytes used in many 128-bit and 64-bit instructions tomodify the opcode.Table A-3. Second Byte of Two-Byte Opcodes, Low Nibble 0–7hPrefix Nibble1n/a00Group162Group272MOVUPSnoneVps, WpsF31Vpd, Wpdn/a2n/a3n/a4noneF35667invalidSYSCALLCLTSSYSRETMOVHPSVps, MqMOVLHPSMOVHPSLSLGv, EwMOVLPSVps, MqMOVHLPSMOVLPSVps, VRqMq, VpsVps, WqVps, WqVps, VRqMq, VpsMOVSLDUPinvalidinvalidinvalidMOVSHDUPinvalidUNPCKLPS UNPCKHPSVps, WpsMOVLPDWpd, VpdUNPCKLPD UNPCKHPDMOVHPDVsd, MqMq, VsdVpd, WqVpd, WqVsd, MqMq, VsdMOVDDUPinvalidinvalidinvalidinvalidinvalidinvalidinvalidinvalidinvalidVdq/sd, WsdWsd, VsdRd/q, Cd/qRd/q, Dd/qVpd,WsdCd/q, Rd/qDd/q, Rd/qWRMSRRDTSCRDMSRRDPMCSYSENTER3SYSEXIT3invalidinvalidCMOVOCMOVNOCMOVBCMOVNBCMOVZCMOVNZCMOVBECMOVNBEGv, EvGv, EvGv, EvGv, EvGv, EvGv, EvGv, EvGv, EvMOVMSKPSSQRTPSRSQRTPSRCPPSANDPSANDNPSORPSXORPSGd, VRpsVps, WpsVps, WpsVps, WpsVps, WpsVps, WpsVps, WpsVps, WpsinvalidSQRTSSRSQRTSSRCPSSinvalidinvalidinvalidinvalidVss, WssVss, WssVss, WssMOVMSKPDSQRTPDinvalidinvalidGd, VRpdVpd, WpdMOVinvalidF26Vps, WpsMOVSDF2SQRTSDANDPDANDNPDORPDXORPDVpd, WpdVpd, WpdVpd, WpdVpd, WpdinvalidinvalidinvalidinvalidinvalidinvalidVsd, WsdnoneF36F2Wss, Vss5LARMOVUPD6666Vdq/ss, Wss4Gv, EwWps, VpsMOVSS3PUNPCKLBWPUNPCKLWDPUNPCKLDQPACKSSWBPCMPGTBPCMPGTWPCMPGTDPACKUSWBPq, QdPq, QdPq, QdPq, QqPq, QqPq, QqPq, QqPq, QqinvalidinvalidinvalidinvalidinvalidinvalidinvalidinvalidPUNPCKLBWPUNPCKLWDPUNPCKLDQPACKSSWBPCMPGTBPCMPGTWPCMPGTDPACKUSWBVdq, WqVdq, WqVdq, WqVdq, WdqVdq, WdqVdq, WdqVdq, WdqVdq, WdqinvalidinvalidinvalidinvalidinvalidinvalidinvalidinvalidNote:1.
All two-byte opcodes begin with an 0Fh byte. Rows in the table show the high nibble of the second opcode bytes,columns show the low nibble of this byte.2. An opcode extension is specified in bits 5–3 of the ModRM byte. See “ModRM Extensions to One-Byte and TwoByte Opcodes” on page 348 for details.3. Invalid in long mode.Opcode and Operand Encodings343AMD64 Technology24594—Rev. 3.13—July 2007Table A-3. Second Byte of Two-Byte Opcodes, Low Nibble 0–7h (continued)Prefix Nibble1PSHUFHW766n/a4567PCMPEQBPCMPEQWPCMPEQDEMMSPq, QqPq, QqPq, QqinvalidinvalidinvalidinvalidinvalidinvalidinvalidPSHUFDGroup 122Group 132Group 142PCMPEQBPCMPEQWPCMPEQDinvalidVdq, WdqVdq, WdqVdq, WdqPSHUFLWinvalidinvalidinvalidinvalidinvalidinvalidinvalidJOJNOJBJNBJZJNZJBEJNBEJzJzJzJzJzJzJzJzSETOSETNOSETBSETNBSETZSETNZSETBESETNBEEbVq, Wq, Ib89ABEbEbEbEbPUSHPOPCPUIDBTFSFSCMPXCHGEb, GbEv, GvXADDF3C66EbSHLDEbEbinvalidinvalidEv, GvEv, Gv, IbLSSBTRLFSEv, Gv, CLLGSGz, MpEv, GvGz, MpGz, MpGv, EbGv, EwCMPPSMOVNTIPINSRWPEXTRWSHUFPSGroup 92Vps, Wps, IbMd/q, Gd/qPq, Ew, IbGd, PRq, IbVps, Wps, IbCMPSSinvalidinvalidinvalidinvalidPEXTRWSHUFPDMOVZXVss, Wss, IbEb, GbEv, GvCMPPDinvalidCMPSDPINSRWVdq, Ew, IbVpd, Wpd, IbF2MqGd, VRdq, Ib Vpd, Wpd, IbinvalidinvalidinvalidinvalidinvalidVsd, Wsd, IbinvalidnoneinvalidF3D66F2PSRLWPSRLDPSRLQPADDQPMULLWPq, QqPq, QqPq, QqPq, QqPq, QqinvalidinvalidinvalidinvalidinvalidF3PMOVMSKBGd, PRqMOVQ2DQinvalidVdq, PRqADDSUBPDPSRLWPSRLDPSRLQPADDQPMULLWMOVQPMOVMSKBVpd, WpdVdq, WdqVdq, WdqVdq, WdqVdq, WdqVdq, WdqWq, VqGd, VRdqADDSUBPSinvalidinvalidinvalidinvalidinvalidMOVDQ2QinvalidPq, VRqVps, WpsnonePAVGBPSRAWPSRADPAVGWPMULHUWPMULHWPq, QqPq, QqPq, QqPq, QqPq, QqPq, QqinvalidinvalidinvalidinvalidinvalidinvalidinvalidMOVNTQMq, PqCVTDQ2PDinvalidVpd, WqEF2Group 142Vq, Wq, Ibnone66Group 1332Vdq, Wdq, IbF2n/aGroup 1222Pq, Qq, IbF3n/a1PSHUFWnonen/a0CVTTPD2DQMOVNTDQVdq, WdqVq, WpdMdq, VdqinvalidCVTPD2DQinvalidPAVGBPSRAWPSRADPAVGWPMULHUWPMULHWVdq, WdqVdq, WdqVdq, WdqVdq, WdqVdq, WdqinvalidinvalidinvalidinvalidinvalidVq, WpdNote:1.
All two-byte opcodes begin with an 0Fh byte. Rows in the table show the high nibble of the second opcode bytes,columns show the low nibble of this byte.2. An opcode extension is specified in bits 5–3 of the ModRM byte. See “ModRM Extensions to One-Byte and TwoByte Opcodes” on page 348 for details.3. Invalid in long mode.344Opcode and Operand Encodings24594—Rev. 3.13—July 2007AMD64 TechnologyTable A-3.
Second Byte of Two-Byte Opcodes, Low Nibble 0–7h (continued)Prefix Nibble1noneF3F6601234567invalidPSLLWPSLLDPSLLQPMULUDQPMADDWDPSADBWMASKMOVQPq, QqPq, QqPq, QqPq, QqPq, QqPq, QqPq, PRqinvalidinvalidinvalidinvalidinvalidinvalidinvalidinvalidinvalidPSLLWPSLLDPSLLQPMULUDQPMADDWDPSADBWMASKMOVDQUVdq, WdqVdq, WdqVdq, WdqVdq, WdqVdq, WdqVdq, WdqVdq, VRdqinvalidinvalidinvalidinvalidinvalidinvalidinvalidLDDQUF2Vpd,MdqNote:1. All two-byte opcodes begin with an 0Fh byte. Rows in the table show the high nibble of the second opcode bytes,columns show the low nibble of this byte.2. An opcode extension is specified in bits 5–3 of the ModRM byte. See “ModRM Extensions to One-Byte and TwoByte Opcodes” on page 348 for details.3. Invalid in long mode.Table A-4.