MMX csapat (mivel Pentium MMX, k6)

MMX technológia parancsok 64-bites egész adatokat, és az adatok csomagolt csoportok (vektorok) a teljes hossza 64 bit. Ilyen adatok lehetnek a memóriában, vagy nyolc MMX-regiszterek. Ezek a nyilvántartások nevezzük mm0, MM1. Mm7. MMX technológia csapatok dolgoznak a következő adattípusok:

  • csomagolt bájt (nyolc byte egy 64 bites regiszter)
  • csomagolt szavak (négy 16 bites szavakat 64-bites regiszter)
  • csomagolt dupla szó (két 32 bites szavakat 64-bites regiszter)
  • 64-bites szó.

Az angol, ezeket az adattípusokat nevezik, illetve csomagolt byte, csomagolt szó, tele duplaszó és quadword.

MMX-parancsok szintaxisa a következő:

Itt utasítás - parancs nevét, cél jelöli kimeneti operandus src - input operandust.

A legtöbb csapat egy utótagot típusának azonosítására használt adatok és számtani:

  • US (előjel nélküli telítettség) - telítésére aritmetikai, adatok előjel nélküli.
  • S vagy SS (aláírt telítettség) - telítésére számtani, a jel adatokat. Ha nincs utótag S, vagy SS, használva gyűrűs számtani (wraparound).
  • B, W, D, Q jelzik az adattípust. Ha két ilyen levél az utótagot, az első megegyezik a bemenő operandus, és a második - a kimenet.

MMX-parancsok végrehajtása az ugyanazt a processzort üzemmódban, és egy lebegőpontos szám. Ezért a teljesítménye MMX-oktatás (kivéve EMMS) „elrontott” szót állapot regiszterek lebegőpontos. A következő MMX-parancsot (megnevezése: mm - MMX-regisztrálja; M32, M64 - térfogat 32 memória és a 64 bit, illetőleg; IMM - azonnali operandus; ir32 - egész nyilvántartás):

parancs processzor az átmenet a MMX-utasítás végrehajtása a végrehajtás rendes lebegőpontos utasítások: ez határozza meg az értéket 1 minden bit a státusz szó.

PADDB mm, mm / M64; PADDW mm, mm / M64; PADDD mm, mm / M64

parancs verem adatokat (bájt, szó vagy dupla szó) a bemeneti és kimeneti operandusok. Ha az összeg kívül az elfogadható tartományon, akkor a szabályok számtani ciklikus felesleges számít a többi tartományban. „Transfer” egységek adattételenként másik nem fordul elő.

PADDSB mm, mm / M64; PADDSW mm, mm / M64

Csapat hajtogatott adatelemek (bájt vagy szó) a bemeneti és kimeneti operandusok. Ha az összeg meghaladja a határértéket a megengedett tartományon, akkor az eredmény akkor tekinthető a határértéket.

PADDUSB mm, mm / M64; PADDUSW mm, mm / M64

Csapat hajtogatott adatelemek (bájt vagy szó) a bemeneti és kimeneti operandusok. Ha az összeg meghaladja a határértéket a megengedett tartományon, akkor az eredmény akkor tekinthető a határértéket.

PSUBB mm, mm / M64; PSUBW mm, mm / M64; PSUBD mm, mm / M64

parancs kivontuk adatokat (bájt, szó vagy dupla szó) a bemeneti operanduszokat kimeneti operandus adatelemek. Ha az eredmény kívül az elfogadható tartományon, akkor a szabályok számtani ciklikus megfelelő egységek számát megszámoltuk a többi tartományban. „Transfer” egységek adattételenként másik nem fordul elő.

PSUBSB mm, mm / M64; PSUBSW mm, mm / M64

parancs korrigált adatokat elemek (bájt vagy szó) az input elem az operandus kimeneti operandus adatot. Ha a különbség meghaladja a határértéket a megengedett tartományon, akkor az eredmény akkor tekinthető a határértéket.

PSUBUSB mm, mm / M64; PSUBUSW mm, mm / M64

parancsnoki elemek levontuk bemenő operandus adatot a operandus adatot hajtott elemeket. Ha a különbség meghaladja a határértéket a megengedett tartományon, akkor az eredmény akkor tekinthető a határértéket.

PSLLW mm, mm / M64 / imm; PSLLD mm, mm / M64 / imm; PSLLQ mm, mm / M64 / imm

működnek parancsot adatok eltolása elemek (16, 32 vagy 64-bites szavak) a kimeneti operandus a bitek számát határozza meg a bemeneti operandus. Freed jelentős bitek nullákkal töltjük fel.

PSRAW mm, mm / M64 / imm; PSRAD mm, mm / M64 / imm

működnek parancsot adatok eltolása elemek (16 vagy 32-bites szavak) a kimeneti operandus a bitek számát határozza meg a bemeneti operandus. Ha változó pozitív szám, akkor a kiürített legfontosabb bitet nullákkal töltjük fel, és ha negatív, akkor az egységek.

PSRLW mm, mm / M64 / imm; PSRLD mm, mm / M64 / imm; PSRLQ mm, mm / M64 / imm

működnek parancsot adatok eltolása elemek (16, 32 vagy 64-bites szavak) a kimeneti operandus a bitek számát határozza meg a bemeneti operandus. Kiürített legfontosabb bitet nullákkal töltjük fel.

parancs kiszámítja a bitenkénti logikai ÉS annak operandusok.

parancs kiszámítja a keringésben (bitenkénti NOT) kimenete az operandus, akkor egy bitenkénti logikai ÉS közötti operandus input és átalakítja a kimeneti érték.

parancs kiszámítja a bitenkénti logikai VAGY annak operandusok.

parancs kiszámítja a bitenkénti logikai XOR annak operandusok.

PMADDWD mm, mm / M64

pár csapat megsokszorozza a 16 bites szót a jele a bemeneti és kimeneti operandusok. Ez biztosítja a négy 32 bites termék. Ezután az első termék kerül a második, és a harmadik a negyedik. Elszámolt összegek a 32 bites kimeneti operandus szó. Ha minden szava egyenlő 8000h, az eredmény az lesz 80000000h (az egyetlen eset, amikor a szorzás a negatív számok eredményez negatív eredményt).

PMULHW mm, mm / M64

parancs páros megsokszorozza a 16 bites szót a jele a bemeneti operandusok és egy kimenet, négy 32 bites termék. MSB írt művek 16 bites kimenet operandus szó. LSB munkák elvesznek.

PMULLW mm, mm / M64

parancs páros megsokszorozza a 16 bites szót a jele a bemeneti operandusok és egy kimenet, négy 32 bites termék. LSB írott művek 16 bites kimenet operandus szó. MSB a munkálatok elvesznek.

PCMPEQB mm, mm / M64; PCMPEQW mm, mm / M64; PCMPEQD mm, mm / M64

páronként összehasonlítjuk parancs adatokat (bájt, 16 vagy 32 bites szó) a bemeneti és kimeneti operandusok. Ha a kimeneti operandus adatot elem megegyezik a megfelelő bemeneti tagot, mint kimeneti operandus elem egység tölti. Ha nincs egyenlőség, akkor nullákkal töltjük fel.

PCMPGTB mm, mm / M64; PCMPGTW mm, mm / M64; PCMPGTD mm, mm / M64

páronként összehasonlítjuk parancs adatokat (bájt, 16 vagy 32 bites szó jele) a bemeneti és kimeneti operandusok. Ha a kimenet a operandus adatot elemen nagyobb, mint a megfelelő input elem, mint kimeneti operandus elem egység tölti; ha nem nagyobb, mint a bemeneti, akkor nullákkal töltjük fel.

PACKSSWB mm, mm / M64; PACKSSDW mm, mm / M64

parancsok átalakítani az adatok elemek hosszú (16-bites és 32-bites szó előjellel) rövidebb (bájt vagy 16 bites szó a jele). Ha az eredeti érték a megengedett tartományon kívüli kimeneti adatot típusú, akkor az eredmény a csomagolás tartják, közel a határ érték a tartományon.

PACKUSWB mm, mm / M64

parancs átalakítja a 16 bites szót a jele a két operandus egy előjel nélküli byte és kiírja a kimeneti operandust. Ha az eredeti szó a jele volt FFh, a konverzió eredménye tekinthető FFh. Ha az eredeti szó negatív átalakításának eredményeként tekinthető 00h.

PUNPCKHBW mm, mm / M64; PUNPCKHWD mm, mm / M64; PUNPCKHDQ mm, mm / M64

parancs páros kombinált forrás adatokat (bájt, 16 vagy 32 bites szó), amelyek a felső 32 bitjét mindkét operandus. A kapott hosszabb adatelemek írva, hogy a kimeneti operandust. A kezdeti értékek LSB operandusok nem befolyásolják az eredményt.

PUNPCKLBW mm, mm / M64; PUNPCKLWD mm, mm / M64; PUNPCKLDQ mm, mm / M64

parancs páros kombinált forrás adatokat (bájt, 16 vagy 32 bites szó) van a kis 32 bit mindkét operandus. A kapott hosszabb adatelemek írva, hogy a kimeneti operandust. A kezdeti értékek legjelentősebb bit operandusok az eredmény nem befolyásolja.

MOVD mm, mm / M32 / ir32

példányban a 32 bit az alacsony helyértékű bitek MMX-regisztrálni vagy memóriát, vagy egy egész szám, regiszter az alsó 32-bites MMX-regiszter (felső biteket nullákkal töltjük fel).

MOVD M32 / ir32, mm

példányban a 32 bit az alacsony helyértékű bitek MMX-memóriában vagy regisztert egészrészre regisztrálni.