Attenzione: questo documento contiene materiale tradotto da "Intel Architecture Software Developer’s Manual, Volume 2: Instruction Set Reference" disponibile dal sito Intel. Questo documento è incentrato sugli operatori Assembly introdotti con l'MMX.
OpCode |
Instruction EMMS |
Description |
Cancella lo stack della FPU e marca come disponibili i registri MMX così da poter essere usati da successive operazioni Floating Point.
L'istruzione EMMS va usata alla fine delle operazioni MMX prima di chiamare qualsiasi procedura che potrebbe fare uso di istruzioni Floating Point.
OpCode |
Instruction MOVD mm,r/m32 MOVD r/m32,mm |
Description |
Copia una DoubleWorld (32 bits) dal secondo operando (sorgente) al primo operando (destinazione). I due operandi possono essere registri standard a 32 bit, registri MMX, locazioni di memoria, ma tuttavia i dati non possono essere trasferiti tra registri MMX, e tra locazioni di memoria, tantomeno tra un registro standard e un'altro registro standard.
Quando l'operando di destinazione è un registro MMX, i 32 bit dell'operando sorgente vengono scritti nei 32 bit inferiori dei 64 bit dell'operando MMX, e i restanti bit messi a zero. Quando la sorgente è un registro MMX, vengono copiati i soli 32 bit inferiori sulla destinazione.
OpCode |
Instruction MOVQ mm,mm/m64 MOVQ mm/m64,mm |
Description |
Copia una QuadWord (64 bit) tra il secondo operando (sorgente) al primo operando (destinazione). Gli operandi possono essere locazioni di memoria o registri MMX, tuttavia non è possibile copiare tra una locazione di memoria e un'altra direttamente.
OpCode |
Instruction |
Description |
PACKSSWB mette e satura 8 signed word (4 da mm, il primo operando, e 4 da mm/m64, il secondo operando) in 8 signed byte in mm (il primo operando). PACKSSDW mette e satura 4 signed doubleword (2 da mm e 2da mm/m64) in 4signed word in mm.
L'operando di destinazione per entrambe deve essere un registro MMX
OpCode |
Instruction |
Description |
PACKUSWB mette le 4 signed word da mm e 4 signed word da mm/m64 in 8 unsigned byte di mm. Il risultato viene saturato a 255 se superiore a tale numero o 0 se inferiore.
L'operatore destinazione deve essere un operando MMX.
OpCode |
Instruction |
Description |
Aggiunge le singole componenti (byte, word, doubleword) dell'operando sorgente (il secondo) alle rispetteve componenti dell'operando destinazione (il primo).
L'operando destinazione deve essere un registro MMX, mentre l'operando sorgente può essere un registro MMX o una locazione di memoria da 64bit.
Come la somma tra interi ADD, PADDB, PADDW, PADDD agisce indistintamente tra interi con o senza segno, ma al contrario non modifica nessuna flag. Infatti tutte le istruzioni MMX non hanno una corrispondente flag per indicare l'overflow, o un riporto, e un tale controllo, se richietsto, deve avvenire a priori via software.
OpCode |
Instruction |
Description |
Somma le compomponenti individuali (bytes o words) del operando sorgente (il secondo) con le rispettive componenti del operando destinazione (il primo). Se il risultato di ogni addizione esce fuori dal range viene saturato in maniera adeguata: i byte tra -128..127 e le word tra -32768..32767.
OpCode |
Instruction |
Description |
Somma le compomponenti individuali (bytes o words) del operando sorgente (il secondo) con le rispettive componenti del operando destinazione (il primo). Se il risultato di ogni addizione esce fuori dal range viene saturato in maniera adeguata: i byte tra 0..255 e le word tra 0..65535.
OpCode |
Instruction |
Description |
Esegue un AND tra ogni bit dell'operando sorgente (il secondo) con i rispettivi bit dell'operando destinazione (il primo)
OpCode |
Instruction |
Description |
Esegue un NOT logico sull'operando destinazione (il primo) e un AND tra ogni bit dell'operando sorgente (il secondo) con i rispettivi bit dell'operando destinazione appena invertiti.
OpCode |
Instruction |
Description |
Confronta le rispettive componeti (bytes, words, doublewords) tra l'operando destinazione (il primo) con l'operando sorgente (il secondo). Se una coppia di elementi sono uguali i bit dell'elemento dell'operando destinazione sono tutti impostati a 1, altrimenti vengono impostati a 0.
OpCode |
Instruction |
Description |
Confronta le rispettive componeti (bytes, words, doublewords) tra l'operando destinazione (il primo) con l'operando sorgente (il secondo). Se l'elemento del registro destinazione è più grande del rispettivo elemento del registro sorgente, i bit dell'elemento destinazione vengono messi a uno, altrimenti vengono impostati a 0.
OpCode |
Instruction |
Description |
Moltiplica le singole words con segno del registro destinazione con le rispettive words con segno del registro sorgente, ottenendo 4 doublewords di risultato, che vengono sommate due a due e salvate nel registro destinazione.
L'operando destinazione deve essere un registro MMX, mentre l'operando sorgente può essere un registro MMX o 64-bit in una locazione di memoria.
p 376