2000年12月20日 22:06:00
Notes: * These are not the actual mnemonics: PSHIMD represents the PSLLD, PSRAD and PSRLD instructions when shifting by immediate shift counts. PSHIMW represents the PSLLW, PSRAW and PSRLW instructions when shifting by immediate shift counts. PSHIMQ represents the PSLLQ and PSRLQ instructions when shifting by immediate shift counts. The instructions that shift by immediate counts are differentiated by the ModR/M bytes.
Arithmetic
| Name | Regs | Opcode | Description |
|---|---|---|---|
| PADDB | register, memory/register | 0F FC mod-rm | Add with wrap-around on byte |
| PADDW | register, memory/register | 0F FD mod-rm | Add with wrap-around on word |
| PADDD | register, memory/register | 0F FE mod-rm | Add with wrap-around on doubleword |
| PADDSB | register, memory/register | 0F EC mod-rm | Add signed with saturation on byte |
| PADDSW | register, memory/register | 0F ED mod-rm | Add signed with saturation on word |
| PADDUSB | register, memory/register | 0F DC mod-rm | Add unsigned with saturation on byte |
| PADDUSW | register, memory/register | 0F DD mod-rm | Add unsigned with saturation on word |
| PSUBB | register, memory/register | 0F F8 mod-rm | Subtraction with wrap-around on byte |
| PSUBW | register, memory/register | 0F F9 mod-rm | Subtraction with wrap-around on word |
| PSUBD | register, memory/register | 0F FA mod-rm | Subtraction with wrap-around on doubleword |
| PSUBSB | register, memory/register | 0F E8 mod-rm | Subtract signed with saturation on byte |
| PSUBSW | register, memory/register | 0F E9 mod-rm | Subtract signed with saturation on word |
| PSUBUSB | register, memory/register | 0F D8 mod-rm | Subtract unsigned with saturation on byte |
| PSUBUSW | register, memory/register | 0F D9 mod-rm | Subtract unsigned with saturation on word |
| PMULHW | register, memory/register | 0F E5 mod-rm | Packed multiply high on words |
| PMULLW | register, memory/register | 0F D5 mod-rm | Packed multiply low on words |
| PMADDWD | register, memory/register | 0F F5 mod-rm | Packed multiply on words and add resulting pairs |
Comparison
| Name | Regs | Opcode | Description |
|---|---|---|---|
| PCMPEQB | register, memory/register | 0F 74 mod-rm, | Packed compare for equality byte |
| PCMPEQW | register, memory/register | 0F 75 mod-rm | Packed compare for equality word |
| PCMPEQD | register, memory/register | 0F 76 mod-rm | Packed compare for equality doubleword |
| PCMPGTB | register, memory/register | 0F 64 mod-rm | Packed compare greater than byte |
| PCMPGTW | register, memory/register | 0F 65 mod-rm | Packed compare greater than word |
| PCMPGTD | register, memory/register | 0F 66 mod-rm | Packed compare greater than doubleword |
Conversion
| Name | Regs | Opcode | Description |
|---|---|---|---|
| PACKUSWB | register, memory/register | 0F 67 mod-rm | Pack words into bytes (unsigned with saturation) |
| PACKSSWB | register, memory/register | 0F 63 mod-rm | Pack words into bytes (signed with saturation) |
| PACKSSDW | register, memory/register | 0F 6B mod-rm | Pack doublewords into words (signed with saturation) |
| PUNPCKHBW | register, memory/register | 0F 68 mod-rm | Unpack (interleave) high-order bytes from MMX TM register |
| PUNPCKHWD | register, memory/register | 0F 69 mod-rm | Unpack (interleave) high-order words from MMX TM register |
| PUNPCKHDQ | register, memory/register | 0F 6A mod-rm | Unpack (interleave) high-order doublewords from MMX TM register |
| PUNPCKLBW | register, memory/register | 0F 60 mod-rm | Unpack (interleave) low-order bytes from MMX register |
| PUNPCKLWD | register, memory/register | 0F 61 mod-rm | Unpack (interleave) low-order words from MMX register |
| PUNPCKLDQ | register, memory/register | 0F 62 mod-rm | Unpack (interleave) low-order doublewords from MMX register |
Logical
| Name | Regs | Opcode | Description |
|---|---|---|---|
| PAND | register, memory/register | 0F DB mod-rm | Bitwise AND |
| PANDN | register, memory/register | 0F DF mod-rm | Bitwise AND NOT |
| POR | register, memory/register | 0F EB mod-rm | Bitwise OR |
| PXOR | register, memory/register | 0F EF mod-rm | Bitwise XOR |
Shift
| Name | Regs | Opcode | Description |
|---|---|---|---|
| PSLLW | register, memory/register | 0F F1 mod-rm | Packed shift left logical word by amount specified in MMX register or by immediate value |
| PSLLD | register, memory/register | 0F F2 mod-rm, [sib] | Packed shift left logical doubleword by amount specified in MMX register or by immediate value |
| PSLLQ | register, memory/register | 0F F3 mod-rm | Packed shift left logical quadword by amount specified in MMX register or by immediate value |
| PSRLW | register, memory/register | 0F D1 mod-rm | Packed shift right logical word by amount specified in MMX register or by immediate value |
| PSRLD | register, memory/register | 0F D2 mod-rm | Packed shift right logical doubleword by amount specified in MMX register or by immediate value |
| PSRLQ | register, memory/register | 0F D3 mod-rm | Packed shift right logical quadword by amount specified in MMX register or by immediate value |
| PSRAW | register, memory/register | 0F E1 mod-rm | Packed shift right arithmetic word by amount specified in MMX register or by immediate value |
| PSRAD | register, memory/register | 0F E2 mod-rm | Packed shift right arithmetic doubleword by amount specified in MMX register or by immediate value |
| PSHIMW* | register, immediate | 0F 71 mod-rm, imm | |
| PSHIMD* | register, immediate | 0F 72 mod-rm, imm | |
| PSHIMQ* | register, immediate | 0F 73 mod-rm, imm |
Data Transfer
| Name | Regs | Opcode | Description |
|---|---|---|---|
| MOVD | register, memory/iregister | 0F 6E mod-rm | Move doubleword to MMX register or from MMX register |
| MOVD | memory/iregister, register | 0F 7E mod-rm | Move doubleword to MMX register or from MMX register |
| MOVQ | register, memory/register | 0F 6F mod-rm | Move quadword to MMX register or from MMX register |
| MOVQ | memory/register, register | 0F 7F mod-rm | Move quadword to MMX register or from MMX register |
FP & MMX State Mgmt
| Name | Regs | Opcode | Description |
|---|---|---|---|
| EMMS | 0F 77 | Empty MMX state |
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=3270
本文详细介绍了MMX指令集中的各类指令,包括算术运算、逻辑运算、位操作、数据转换等,并提供了每种指令的具体操作码及描述,有助于深入理解MMX技术的工作原理。
4432

被折叠的 条评论
为什么被折叠?



