You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300 lines
10 KiB
HTML

<HTML>
<HEAD>
<TITLE>MMX Erweiterung -- neue Befehle (Konvertierung)</TITLE>
<SCRIPT LANGUAGE="Javascript">
<!-- Test Browser Version
// Javascript written 1998 by Jens Hohmuth (Script-Version: 3.0)
// (c) Copyright 1998 by Jens Hohmuth@fh-zwickau.de. All rights reserved.
var browserok= 0;
var version= parseInt( navigator.appVersion );
if( version >= 3 ) browserok= 1;
if( document.images ) browserok= 1;
if( browserok )
{
var imgdata_touched = new Array();
var imgdata_released= new Array();
}
// load imagedata
function precache( name, pic1, pic2 )
{
if( browserok )
{
imgdata_touched [ name ]= new Image();
imgdata_touched [ name ].src= pic2;
imgdata_released[ name ]= new Image();
imgdata_released[ name ].src= pic1;
}
}
// "Release", called if mouse left button
function release( name )
{
if( browserok )
{
document.images[ name ].src= imgdata_released[ name ].src;
}
}
// "Touch", called if mouse over link-button
function touch( name )
{
if( browserok )
{
document.images[ name ].src= imgdata_touched[ name ].src;
}
}
// load (precache) Buttons
if( browserok )
{
precache( "left", "../images/arrowl.gif", "../images/arrowlp.gif" );
precache( "right", "../images/arrowr.gif", "../images/arrowrp.gif" );
precache( "index", "../images/index.gif", "../images/indexp.gif" );
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#C0C0C0" BACKGROUND="../images/stone.jpg">
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#800000">
<TH ALIGN=LEFT>
<FONT COLOR="#FF8080">
<H2>Konvertier-Befehle</H2>
</FONT>
</TH>
</TR></TABLE>
<BR>
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#000080">
<TH ALIGN=LEFT>
<FONT COLOR="#C0C0FF">
<A NAME="PACKSSWB">
<U>PACKSSWB</U> register, memory/register -- <U>PACK</U>en von
<U>S</U>igned <U>W</U>ord-Daten in <U>B</U>ytes mit <U>S</U>igned
Saturation<BR>
</A>
<A NAME="PACKSSDW">
<U>PACKSSDW</U> register, memory/register -- <U>PACK</U>en von
vorzeichenbehafteten (<U>S</U>igned) <U>D</U>oubleword-
Daten in <U>W</U>ords mit <U>S</U>igned Saturation
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Die PACKSS Befehle packen vorzeichenbehaftete Datenelemente aus
dem Quell- und dem Zieloperanden mit Saturation in vorzeichenbehaftete
Datenelemente im Zieloperanden. Die urspr&uuml;nglichen Werte des
Zieloperanden werden nach der Konvertierung in die niederwertigen
Bits des Ergebniswertes (im Zieloperanden) kopiert. Die konvertierten
Daten des Quelloperanden finden sich nach der Befehlsausf&uuml;hrung
in den h&ouml;herwertigen Bits des Zieloperanden.</P>
<P>PACKSSWB packt demnach vier vorzeichenbehaftete Wortwerte aus
dem Quelloperanden und vier vorzeichenbehaftete Wortwerte aus dem
Zieloperanden in acht vorzeichenbehaftete Bytes im Zieloperanden.
Ist der vorzeichenbehaftete Wert eines Wortwertes gr&ouml;&szlig;er
oder kleiner als der Wertebereich eines vorzeichenbehafteten Bytes,
so wird der Wert einer Saturation unterzogen. Dabei wird im Fall des
&Uuml;berlaufes das entsprechende Byte auf den Wert 7Fh (127d)
oder im Fall eines Unterlaufs auf den Wert 80h (-128d) gesetzt.</P>
<P>Auf &auml;hnliche Weise arbeitet PACKSDW, das jeweils zwei
vorzeichenbehaftete Doubleword-Werte des Quell- und Zieloperanden in
vier vorzeichenbehaftete Wortwerte im Zieloperanden konvertiert. Auch
hier wird wieder Saturation angewendet und zu gro&szlig;e (oder zu kleine)
Werte geclippt. Im Falle eines &Uuml;berlaufs wird der Wert auf 7FFFh
(32767d) und im Fall eines Unterlaufs auf den Wert 8000h (-32768d)
gesetzt.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= <FONT COLOR="#FF0000">0370 0020 01A1 E2F2h</FONT> ; Zieloperand
MM1= <FONT COLOR="#000000">0010 0046 0092 1040h</FONT> ; Quelloperand
PACKSSWB MM0, MM1 ; Packen der Wortdaten in acht
; Byte mit Signed Saturation
Ergebnis in MM0= <FONT COLOR="#000000">10 46 7F 7F</FONT> <FONT COLOR="#FF0000">7F 20 7F 80h</FONT>
</PRE></FONT>
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#000080">
<TH ALIGN=LEFT>
<FONT COLOR="#C0C0FF">
<A NAME="PACKUSWB">
<U>PACKUSWB</U> register, memory/register -- <U>PACK</U>en von
vorzeichenbehafteten <U>W</U>ord-Datenelementen mit <U>U</U>n<U>S</U>igned
Saturation in <U>B</U>yte-Daten
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Der PACKUSWB Befehl packt vier vorzeichenbehaftete Wortwerte im
Quell- und vier vorzeichenbehaftete Word-Werte im Zieloperanden mit
Saturation in acht vorzeichenlose Byte-Datenelemente im Zieloperanden.
Die Saturation f&uuml;hrt hier bei einem &Uuml;berlauf des vorzeichenlosen
Byte-Wertebereichs zum Wert FFh (255d) und im Fall eines Unterlaufs zum
Wert 0.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= <FONT COLOR="#FF0000">0370 0020 01A1 E2F2h</FONT> ; Zieloperand
MM1= <FONT COLOR="#000000">0010 0046 0092 1040h</FONT> ; Quelloperand
PACKUSWB MM0, MM1 ; Packen der Wortdaten in acht
; Byte mit Unsigned Saturation
Ergebnis in MM0= <FONT COLOR="#000000">10 46 92 FF</FONT> <FONT COLOR="#FF0000">FF 20 FF 00h</FONT>
</PRE></FONT>
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#000080">
<TH ALIGN=LEFT>
<FONT COLOR="#C0C0FF">
<A NAME="PUNPCKHBW">
<U>PUNPCKHBW</U> register, memory/register -- Entpacken
(<U>UNP</U>a<U>CK</U>) von ge<U>P</U>ackten <U>B</U>yte-Datenelementen
(h&ouml;herwertige, <U>H</U>igh) in <U>W</U>ord-Daten<BR>
</A>
<A NAME="PUNPCKHWD">
<U>PUNPCKHWD</U> register, memory/register -- Entpacken
(<U>UNP</U>a<U>CK</U>) von ge<U>P</U>ackten <U>W</U>ord-Datenelementen
(h&ouml;herwertige, <U>H</U>igh) in <U>D</U>oubleword-Daten<BR>
</A>
<A NAME="PUNPCKHDQ">
<U>PUNPCKHDQ</U> register, memory/register -- Entpacken
(<U>UNP</U>a<U>CK</U>) von ge<U>P</U>ackten <U>D</U>oubleword-
Datenelementen (h&ouml;herwertige, <U>H</U>igh) in ein <U>Q</U>uadword
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Alle PUNPCKH-Befehle beachten jeweils nur die h&ouml;herwertigen
Datenelemente der angegebenen Operanden. Diese werden entpackt und
abwechselnd im Zieloperanden gespeichert. Die niederwertigen
Datenelemente werden von PUNPCKH ignoriert.</P>
<P>Der PUNPCKHBW Befehl entpackt und speichert die vier
h&ouml;herwertigen Bytes des Quell- und Zieloperanden abwechselnd
als Wortwerte im Zieloperanden (siehe Beispiel).</P>
<P>Der PUNPCKHWD Befehl entpackt und speichert die zwei
h&ouml;herwertigen Wortwerte des Quell- und Zieloperanden abwechselnd
als Doubleword-Werte im Zieloperanden.</P>
<P>Der PUNPCKHDQ Befehl entpackt und speichert das h&ouml;herwertige
Doubleword des Quell- und Zieloperanden abwechselnd als ein Quadword
im Zieloperanden.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= <FONT COLOR="#FF0000">03 70 00 20</FONT> <I>01 A1 E2 F2</I>h ; Zieloperand
MM1= <FONT COLOR="#000000">40 50 60 70</FONT> <I>40 40 40 40</I>h ; Quelloperand
; Die kursiven Werte werden vom folgenden Befehl ignoriert.
PUNPCKHBW MM0, MM1
Ergebnis in MM0= <FONT COLOR="#000000">40</FONT> <FONT COLOR="#FF0000">03</FONT> <FONT COLOR="#000000">50</FONT> <FONT COLOR="#FF0000">70</FONT> <FONT COLOR="#000000">60</FONT> <FONT COLOR="#FF0000">00</FONT> <FONT COLOR="#000000">70</FONT> <FONT COLOR="#FF0000">20h</FONT>
</PRE></FONT>
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#000080">
<TH ALIGN=LEFT>
<FONT COLOR="#C0C0FF">
<A NAME="PUNPCKLBW">
<U>PUNPCKLBW</U> register, memory/register -- Entpacken
(<U>UNP</U>a<U>CK</U>) von ge<U>P</U>ackten <U>B</U>yte-Datenelementen
(niederwertige, <U>L</U>ow) in <U>W</U>ord-Daten<BR>
</A>
<A NAME="PUNPCKLWD">
<U>PUNPCKLWD</U> register, memory/register -- Entpacken
(<U>UNP</U>a<U>CK</U>) von ge<U>P</U>ackten <U>W</U>ord-Datenelementen
(niederwertige, <U>L</U>ow) in <U>D</U>oubleword-Daten<BR>
</A>
<A NAME="PUNPCKLDQ">
<U>PUNPCKLDQ</U> register, memory/register -- Entpacken
(<U>UNP</U>a<U>CK</U>) von ge<U>P</U>ackten <U>D</U>oubleword-Datenelementen
(niederwertige, <U>L</U>ow) in ein <U>Q</U>uadword
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Alle PUNPCKL-Befehle beachten jeweils nur die niederwertigen
Datenelemente der angegebenen Operanden. Diese werden entpackt
und abwechselnd im Zieloperanden gespeichert. Die h&ouml;herwertigen
Datenelemente werden von PUNPCKL ignoriert.</P>
<P>Der PUNPCKLBW Befehl entpackt und speichert die vier niederwertigen
Bytes des Quell- und Zieloperanden abwechselnd als Wortwerte im
Zieloperanden (siehe Beispiel).</P>
<P>Der PUNPCKLWD Befehl entpackt und speichert die zwei niederwertigen
Wortwerte des Quell- und Zieloperanden abwechselnd als
Doubleword-Werte im Zieloperanden.</P>
<P>Der PUNPCKLDQ Befehl entpackt und speichert das niederwertige
Doubleword des Quell- und Zieloperanden abwechselnd als ein Quadwort
im Zieloperanden.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= <I>03 70 00 20</I> <FONT COLOR="#FF0000">01 A1 E2 F2h</FONT> ; Zieloperand
MM1= <I>40 50 60 70</I> <FONT COLOR="#000000">40 50 60 70h</FONT> ; Quelloperand
; Die kursiven Werte werden vom folgenden Befehl ignoriert.
PUNPCKLBW MM0, MM1
Ergebnis in MM0= <FONT COLOR="#000000">40</FONT> <FONT COLOR="#FF0000">01</FONT> <FONT COLOR="#000000">50</FONT> <FONT COLOR="#FF0000">A1</FONT> <FONT COLOR="#000000">60</FONT> <FONT COLOR="#FF0000">E2</FONT> <FONT COLOR="#000000">70</FONT> <FONT COLOR="#FF0000">F2h</FONT>
</PRE></FONT>
<!-- wie gehts weiter ------------------------------------------------------>
<P><HR SIZE=2></P>
<A HREF="mmx_6.htm" onMouseOver="touch( 'left' );" onMouseOut="release( 'left' );">
<IMG SRC="../images/arrowl.gif" NAME="left" ALT="zurueck" BORDER=0 ALIGN=LEFT></A>
<A HREF="mmx_8.htm" onMouseOver="touch( 'right' );" onMouseOut="release( 'right' );">
<IMG SRC="../images/arrowr.gif" NAME="right" ALT="weiter" BORDER=0 ALIGN=RIGHT></A>
<CENTER>
<A HREF="index.htm#Befehle" onMouseOver="touch( 'index' );" onMouseOut="release( 'index' );">
<IMG SRC = "../images/index.gif" NAME="index" ALT="Zum Index" BORDER=0></A>
</CENTER>
<BR>
<!-- Adresse --------------------------------------------------------------->
<HR SIZE=2>
<ADDRESS>
Probleme oder Vorschl&auml;ge zu dieser Webseite, bitte per email an:
<A HREF="mailto:hohmuth@t-online.de">
<B>hohmuth@t-online.de</B>
</A>
<BR>
Letzte &Auml;nderungen am: 15.01.1998, Jens Hohmuth.
</ADDRESS>
</BODY>
</HTML>