Manuale UtenteSommarioChapter 1 About This Manual211.1 IA-32 Processors Covered in this Manual211.2 Overview of Volume 2A and 2B: Instruction Set Reference221.3 Notational Conventions231.3.1 Bit and Byte Order241.3.2 Reserved Bits and Software Compatibility251.3.3 Instruction Operands261.3.4 Hexadecimal and Binary Numbers261.3.5 Segmented Addressing261.3.6 Exceptions271.3.7 A New Syntax for CPUID, CR, and MSR Values271.4 Related Literature28Chapter 2 Instruction Format312.1 Instruction Format for Protected Mode, real-address Mode, and virtual-8086 mode312.1.1 Instruction Prefixes312.1.2 Opcodes332.1.3 ModR/M and SIB Bytes342.1.4 Displacement and Immediate Bytes342.1.5 Addressing-Mode Encoding of ModR/M and SIB Bytes342.2 IA-32e Mode392.2.1 REX Prefixes392.2.1.1 Encoding402.2.1.2 More on REX Prefix Fields402.2.1.3 Displacement432.2.1.4 Direct Memory-Offset MOVs432.2.1.5 Immediates442.2.1.6 RIP-Relative Addressing442.2.1.7 Default 64-Bit Operand Size452.2.2 Additional Encodings for Control and Debug Registers45Chapter 3 Instruction Set Reference, A-M473.1 Interpreting the Instruction Reference Pages473.1.1 Instruction Format473.1.1.1 Opcode Column in the Instruction Summary Table483.1.1.2 Instruction Column in the Opcode Summary Table493.1.1.3 64-bit Mode Column in the Instruction Summary Table523.1.1.4 Compatibility/Legacy Mode Column in the Instruction Summary Table533.1.1.5 Description Column in the Instruction Summary Table533.1.1.6 Description Section533.1.1.7 Operation Section533.1.1.8 Intel® C/C++ Compiler Intrinsics Equivalents Section573.1.1.9 Flags Affected Section603.1.1.10 FPU Flags Affected Section603.1.1.11 Protected Mode Exceptions Section603.1.1.12 Real-Address Mode Exceptions Section623.1.1.13 Virtual-8086 Mode Exceptions Section623.1.1.14 Floating-Point Exceptions Section623.1.1.15 SIMD Floating-Point Exceptions Section633.1.1.16 Compatibility Mode Exceptions Section633.1.1.17 64-Bit Mode Exceptions Section633.2 Instructions (A-M)64AAA-ASCII Adjust After Addition65AAD-ASCII Adjust AX Before Division67AAM-ASCII Adjust AX After Multiply69AAS-ASCII Adjust AL After Subtraction71ADC-Add with Carry73ADD-Add76ADDPD-Add Packed Double-Precision Floating-Point Values79ADDPS-Add Packed Single-Precision Floating-Point Values82ADDSD-Add Scalar Double-Precision Floating-Point Values85ADDSS-Add Scalar Single-Precision Floating-Point Values88ADDSUBPD-Packed Double-FP Add/Subtract91ADDSUBPS-Packed Single-FP Add/Subtract95AND-Logical AND99ANDPD-Bitwise Logical AND of Packed Double-Precision Floating- Point Values102ANDPS-Bitwise Logical AND of Packed Single-Precision Floating-Point Values104ANDNPD-Bitwise Logical AND NOT of Packed Double-Precision Floating-Point Values106ANDNPS-Bitwise Logical AND NOT of Packed Single-Precision Floating-Point Values108ARPL-Adjust RPL Field of Segment Selector110BOUND-Check Array Index Against Bounds112BSF-Bit Scan Forward115BSR-Bit Scan Reverse117BSWAP-Byte Swap119BT-Bit Test121BTC-Bit Test and Complement124BTR-Bit Test and Reset127BTS-Bit Test and Set130CALL-Call Procedure133CBW/CWDE/CDQE-Convert Byte to Word/Convert Word to Doubleword/Convert Doubleword to Quadword151CLC-Clear Carry Flag152CLD-Clear Direction Flag153CLFLUSH-Flush Cache Line154CLI - Clear Interrupt Flag156CLTS-Clear Task-Switched Flag in CR0159CMC-Complement Carry Flag161CMOVcc-Conditional Move162CMP-Compare Two Operands169CMPPD-Compare Packed Double-Precision Floating-Point Values172CMPPS-Compare Packed Single-Precision Floating-Point Values177CMPS/CMPSB/CMPSW/CMPSD/CMPSQ-Compare String Operands182CMPSD-Compare Scalar Double-Precision Floating-Point Values188CMPSS-Compare Scalar Single-Precision Floating-Point Values192CMPXCHG-Compare and Exchange196CMPXCHG8B/CMPXCHG16B-Compare and Exchange Bytes199COMISD-Compare Scalar Ordered Double-Precision Floating-Point Values and Set EFLAGS202COMISS-Compare Scalar Ordered Single-Precision Floating-Point Values and Set EFLAGS205CPUID-CPU Identification208CVTDQ2PD-Convert Packed Doubleword Integers to Packed Double- Precision Floating-Point Values236CVTDQ2PS-Convert Packed Doubleword Integers to Packed Single- Precision Floating-Point Values238CVTPD2DQ-Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers241CVTPD2PI-Convert Packed Double-Precision Floating-Point Values to Packed Doubleword Integers244CVTPD2PS-Convert Packed Double-Precision Floating-Point Values to Packed Single-Precision Floating-Point Values247CVTPI2PD-Convert Packed Doubleword Integers to Packed Double- Precision Floating-Point Values250CVTPI2PS-Convert Packed Doubleword Integers to Packed Single- Precision Floating-Point Values253CVTPS2DQ-Convert Packed Single-Precision Floating-Point Values to Packed Doubleword Integers256CVTPS2PD-Convert Packed Single-Precision Floating-Point Values to Packed Double-Precision Floating-Point Values259CVTPS2PI-Convert Packed Single-Precision Floating-Point Values to Packed Doubleword Integers262CVTSD2SI-Convert Scalar Double-Precision Floating-Point Value to Doubleword Integer265CVTSD2SS-Convert Scalar Double-Precision Floating-Point Value to Scalar Single-Precision Floating-Point Value268CVTSI2SD-Convert Doubleword Integer to Scalar Double-Precision Floating-Point Value271CVTSI2SS-Convert Doubleword Integer to Scalar Single-Precision Floating-Point Value274CVTSS2SD-Convert Scalar Single-Precision Floating-Point Value to Scalar Double-Precision Floating-Point Value277CVTSS2SI-Convert Scalar Single-Precision Floating-Point Value to Doubleword Integer280CVTTPD2PI-Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers283CVTTPD2DQ-Convert with Truncation Packed Double-Precision Floating-Point Values to Packed Doubleword Integers286CVTTPS2DQ-Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Doubleword Integers289CVTTPS2PI-Convert with Truncation Packed Single-Precision Floating-Point Values to Packed Doubleword Integers292CVTTSD2SI-Convert with Truncation Scalar Double-Precision Floating- Point Value to Signed Doubleword Integer295CVTTSS2SI-Convert with Truncation Scalar Single-Precision Floating- Point Value to Doubleword Integer298CWD/CDQ/CQO-Convert Word to Doubleword/Convert Doubleword to Quadword301DAA-Decimal Adjust AL after Addition303DAS-Decimal Adjust AL after Subtraction305DEC-Decrement by 1307DIV-Unsigned Divide310DIVPD-Divide Packed Double-Precision Floating-Point Values314DIVPS-Divide Packed Single-Precision Floating-Point Values317DIVSD-Divide Scalar Double-Precision Floating-Point Values320DIVSS-Divide Scalar Single-Precision Floating-Point Values323EMMS-Empty MMX Technology State326ENTER-Make Stack Frame for Procedure Parameters328F2XM1-Compute 2x-1332FABS-Absolute Value334FADD/FADDP/FIADD-Add336FBLD-Load Binary Coded Decimal340FBSTP-Store BCD Integer and Pop342FCHS-Change Sign345FCLEX/FNCLEX-Clear Exceptions347FCMOVcc-Floating-Point Conditional Move349FCOMI/FCOMIP/ FUCOMI/FUCOMIP-Compare Floating Point Values and Set EFLAGS355FCOS-Cosine358FDECSTP-Decrement Stack-Top Pointer360FDIV/FDIVP/FIDIV-Divide362FDIVR/FDIVRP/FIDIVR-Reverse Divide366FFREE-Free Floating-Point Register370FICOM/FICOMP-Compare Integer371FILD-Load Integer374FINCSTP-Increment Stack-Top Pointer376FINIT/FNINIT-Initialize Floating-Point Unit378FIST/FISTP-Store Integer380FISTTP-Store Integer with Truncation384FLD-Load Floating Point Value387FLD1/FLDL2T/FLDL2E/FLDPI/FLDLG2/FLDLN2/FLDZ-Load Constant390FLDCW-Load x87 FPU Control Word392FLDENV-Load x87 FPU Environment394FMUL/FMULP/FIMUL-Multiply397FNOP-No Operation401FPATAN-Partial Arctangent402FPREM-Partial Remainder405FPREM1-Partial Remainder408FPTAN-Partial Tangent411FRNDINT-Round to Integer414FRSTOR-Restore x87 FPU State416FSAVE/FNSAVE-Store x87 FPU State419FSCALE-Scale423FSIN-Sine425FSINCOS-Sine and Cosine427FSQRT-Square Root430FST/FSTP-Store Floating Point Value432FSTCW/FNSTCW-Store x87 FPU Control Word435FSTENV/FNSTENV-Store x87 FPU Environment438FSTSW/FNSTSW-Store x87 FPU Status Word441FSUB/FSUBP/FISUB-Subtract444FSUBR/FSUBRP/FISUBR-Reverse Subtract448FTST-TEST452FUCOM/FUCOMP/FUCOMPP-Unordered Compare Floating Point Values454FXAM-ExamineModR/M457FXCH-Exchange Register Contents459FXRSTOR-Restore x87 FPU, MMX , XMM, and MXCSR State461FXSAVE-Save x87 FPU, MMX Technology, SSE, and SSE2 State464FXTRACT-Extract Exponent and Significand475FYL2X-Compute y * log2x477FYL2XP1-Compute y * log2(x +1)479HADDPD-Packed Double-FP Horizontal Add481HADDPS-Packed Single-FP Horizontal Add485HLT-Halt489HSUBPD-Packed Double-FP Horizontal Subtract491HSUBPS-Packed Single-FP Horizontal Subtract495IDIV-Signed Divide499IMUL-Signed Multiply503IN-Input from Port508INC-Increment by 1510INS/INSB/INSW/INSD-Input from Port to String513INT n/INTO/INT 3-Call to Interrupt Procedure517INVD-Invalidate Internal Caches532INVLPG-Invalidate TLB Entry534IRET/IRETD-Interrupt Return536Jcc-Jump if Condition Is Met547JMP-Jump554LAHF-Load Status Flags into AH Register564LAR-Load Access Rights Byte566LDDQU-Load Unaligned Integer 128 Bits570LDMXCSR-Load MXCSR Register573LDS/LES/LFS/LGS/LSS-Load Far Pointer575LEA-Load Effective Address581LEAVE-High Level Procedure Exit584LFENCE-Load Fence586LGDT/LIDT-Load Global/Interrupt Descriptor Table Register587LLDT-Load Local Descriptor Table Register590LMSW-Load Machine Status Word593LOCK-Assert LOCK# Signal Prefix595LODS/LODSB/LODSW/LODSD/LODSQ-Load String597LOOP/LOOPcc-Loop According to ECX Counter601LSL-Load Segment Limit604LTR-Load Task Register608MASKMOVDQU-Store Selected Bytes of Double Quadword611MASKMOVQ-Store Selected Bytes of Quadword614MAXPD-Return Maximum Packed Double-Precision Floating-Point Values617MAXPS-Return Maximum Packed Single-Precision Floating-Point Values620MAXSD-Return Maximum Scalar Double-Precision Floating-Point Value623MAXSS-Return Maximum Scalar Single-Precision Floating-Point Value626MFENCE-Memory Fence629MINPD-Return Minimum Packed Double-Precision Floating-Point Values630MINPS-Return Minimum Packed Single-Precision Floating-Point Values633MINSD-Return Minimum Scalar Double-Precision Floating-Point Value636MINSS-Return Minimum Scalar Single-Precision Floating-Point Value639MONITOR-Set Up Monitor Address642MOV-Move645MOV-Move to/from Control Registers651MOV-Move to/from Debug Registers654MOVAPD-Move Aligned Packed Double-Precision Floating-Point Values656MOVAPS-Move Aligned Packed Single-Precision Floating-Point Values659MOVD/MOVQ-Move Doubleword/Move Quadword662MOVDDUP-Move One Double-FP and Duplicate666MOVDQA-Move Aligned Double Quadword669MOVDQU-Move Unaligned Double Quadword671MOVDQ2Q-Move Quadword from XMM to MMX Technology Register674MOVHLPS- Move Packed Single-Precision Floating-Point Values High to Low676MOVHPD-Move High Packed Double-Precision Floating-Point Value678MOVHPS-Move High Packed Single-Precision Floating-Point Values681MOVLHPS-Move Packed Single-Precision Floating-Point Values Low to High684MOVLPD-Move Low Packed Double-Precision Floating-Point Value686MOVLPS-Move Low Packed Single-Precision Floating-Point Values688MOVMSKPD-Extract Packed Double-Precision Floating-Point Sign Mask691MOVMSKPS-Extract Packed Single-Precision Floating-Point Sign Mask693MOVNTDQ-Store Double Quadword Using Non-Temporal Hint695MOVNTI-Store Doubleword Using Non-Temporal Hint698MOVNTPD-Store Packed Double-Precision Floating-Point Values Using Non-Temporal Hint700MOVNTPS-Store Packed Single-Precision Floating-Point Values Using Non-Temporal Hint703MOVNTQ-Store of Quadword Using Non-Temporal Hint706MOVQ-Move Quadword709MOVQ2DQ-Move Quadword from MMX Technology to XMM Register712MOVS/MOVSB/MOVSW/MOVSD/MOVSQ-Move Data from String to String714MOVSD-Move Scalar Double-Precision Floating-Point Value719MOVSHDUP-Move Packed Single-FP High and Duplicate722MOVSLDUP-Move Packed Single-FP Low and Duplicate725MOVSS-Move Scalar Single-Precision Floating-Point Values728MOVSX/MOVSXD-Move with Sign-Extension731MOVUPD-Move Unaligned Packed Double-Precision Floating-Point Values733MOVUPS-Move Unaligned Packed Single-Precision Floating-Point Values736MOVZX-Move with Zero-Extend739MUL-Unsigned Multiply741MULPD-Multiply Packed Double-Precision Floating-Point Values744MULPS-Multiply Packed Single-Precision Floating-Point Values747MULSD-Multiply Scalar Double-Precision Floating-Point Values750MULSS-Multiply Scalar Single-Precision Floating-Point Values753MWAIT-Monitor Wait756Dimensioni: 2,52 MBPagine: 760Language: EnglishApri il manuale