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.

294 lines
9.8 KiB
HTML

<HTML>
<HEAD>
<TITLE>MMX Erweiterung -- neue Befehle (Schiebe-Befehle)</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>Schiebe-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="PSLLW">
<U>PSLLW</U> register, memory/register -- Logisches
(<U>L</U>ogical) nach Links Schieben (<U>S</U>hift-<U>L</U>eft)
von ge<U>P</U>ackten <U>W</U>ord-Datenelementen um die angegebene
Anzahl Bin&auml;rstellen<BR>
</A>
<A NAME="PSLLD">
<U>PSLLD</U> register, memory/register -- Logisches
(<U>L</U>ogical) nach Links Schieben (<U>S</U>hift-<U>L</U>eft)
von ge<U>P</U>ackten <U>D</U>oubleword-Datenelementen um die
angegebene Anzahl Bin&auml;rstellen<BR>
</A>
<A NAME="PSLLQ">
<U>PSLLQ</U> register, memory/register -- Logisches
(<U>L</U>ogical) nach Links Schieben (<U>S</U>hift-<U>L</U>eft)
des <U>Q</U>uadwords um die angegebene Anzahl Bin&auml;rstellen<BR>
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Die PSLL-Befehle schieben die Bits der gepackten Datenelemente
des Zieloperanden um die im zweiten Operanden (Quelloperand)
angegebene Anzahl Bin&auml;rstellen nach links. Von rechts werden
dabei 0-Bits nachgeschoben. Das Ergebnis der Verschiebung befindet
sich im Zieloperanden.</P>
<P><B>Anmerkungen:</B></P>
<UL>
<LI>Ist die Anzahl der zu verschiebenen Bin&auml;rstellen zur
Entwicklungszeit der Routine bekannt, nicht gr&ouml;&szlig;er als
8-Bit und konstant, so kann auch eine Variante der Befehle benutzt
werden. Diese Variante erwartet als Quelloperanden die Anzahl der
Verschiebungen als direkten Wert, zum Beispiel: PSLLD MM0, 8. Diese
Form der Verschiebung funktioniert auf die gleiche Weise mit allen
unterst&uuml;tzen Verschiebe-Befehlen.</LI>
<LI>Die Verschiebung erfolgt nicht &uuml;ber die Grenzen der
Datenelemente hinaus.</LI>
</UL>
<P>Der PSLLW-Befehl verschiebt die vier gepackten Word-Datenelemente
des Zieloperanden um die Anzahl Bin&auml;rstellen nach links, die im
Quelloperanden angegeben wird. Soll um mehr als 15 Stellen verschoben
werden, so wird der Zieloperand auf den Wert 0 gesetzt.</P>
<P>Der PSLLD-Befehl verschiebt die gepackten Doubleword-Datenelemente
des Zieloperanden um die Anzahl Bin&auml;rstellen nach Links, die im
Quelloperanden angegeben wird. Soll um mehr als 31 Stellen verschoben
werden, so wird der Zieloperand auf den Wert 0 gesetzt.</P>
<P>Der PSLLQ-Befehl verschiebt das Quadword im Zieloperanden um die
Anzahl Bin&auml;rstellen nach links, die im Quelloperanden angegeben
wird. Soll um mehr als 63 Stellen verschoben werden, so wird der
Zieloperand auf den Wert 0 gesetzt.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= 0305 A280 1005 FFFFh
(= 0000 0011 0000 0101 1010 0010 1000 0000 0001 0000 0000 0101 1111 1111 1111 1111b)
MM1= 1
PSLLW MM0, MM1
Ergebnis in MM0= 060A 4500 200A FFFEh
(= 0000 0110 0000 1010 0100 0101 0000 0000 0010 0000 0000 1010 1111 1111 1111 1110b)
</PRE></FONT>
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#000080">
<TH ALIGN=LEFT>
<FONT COLOR="#C0C0FF">
<A NAME="PSRLW">
<U>PSRLW</U> register, memory/register -- Logisches (<U>L</U>ogical)
nach Rechts Schieben (<U>S</U>hift-<U>R</U>ight) von ge<U>P</U>ackten
<U>W</U>ord-Datenelementen um die angegebene Anzahl Bin&auml;rstellen<BR>
</A>
<A NAME="PSRLD">
<U>PSRLD</U> register, memory/register -- Logisches (<U>L</U>ogical)
nach Rechts Schieben (<U>S</U>hift-<U>R</U>ight) von ge<U>P</U>ackten
<U>D</U>oubleword-Datenelementen um die angegebene Anzahl Bin&auml;rstellen<BR>
</A>
<A NAME="PSRLQ">
<U>PSRLQ</U> register, memory/register -- Logisches (<U>L</U>ogical)
nach Rechts Schieben (<U>S</U>hift-<U>R</U>ight) des
<U>Q</U>uadwords um die angegebene Anzahl Bin&auml;rstellen<BR>
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Die PSRL-Befehle schieben die Bits der gepackten Datenelemente des
Zieloperanden um die im zweiten Operanden (Quelloperand) angegebene
Anzahl Bin&auml;rstellen nach rechts. Von links werden dabei 0-Bits
nachgeschoben. Das Ergebnis der Verschiebung befindet sich im
Zieloperanden.</P>
<P>Der PSRLW-Befehl verschiebt die vier gepackten Word-Datenelemente
des Zieloperanden um die Anzahl Bin&auml;rstellen nach rechts, die im
Quelloperanden angegeben wird. Soll um mehr als 15 Stellen verschoben
werden, so wird der Zieloperand auf den Wert 0 gesetzt.</P>
<P>Der PSRLD-Befehl verschiebt die gepackten Doubleword-Datenelemente
des Zieloperanden um die Anzahl Bin&auml;rstellen nach rechts, die im
Quelloperanden angegeben wird. Soll um mehr als 31 Stellen verschoben
werden, so wird der Zieloperand auf den Wert 0 gesetzt.</P>
<P>Der PSRLQ-Befehl verschiebt das Quadword im Zieloperanden um die
Anzahl Bin&auml;rstellen nach rechts, die im Quelloperanden angegeben
wird. Soll um mehr als 63 Stellen verschoben werden, so wird der
Zieloperand auf den Wert 0 gesetzt.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= 0305 A280 1005 FFFFh
(= 0000 0011 0000 0101 1010 0010 1000 0000 0001 0000 0000 0101 1111 1111 1111 1111b)
MM1= 1
PSRLW MM0, MM1
Ergebnis in MM0= 0182 5140 0802 7FFFh
(= 0000 0001 1000 0010 0101 0001 0100 0000 0000 1000 0000 0010 0111 1111 1111 1111b)
</PRE></FONT>
<TABLE BORDER=2 WIDTH="100%" >
<TR ALIGN=LEFT BGCOLOR="#000080">
<TH ALIGN=LEFT>
<FONT COLOR="#C0C0FF">
<A NAME="PSRAW">
<U>PSRAW</U> register, memory/register -- <U>A</U>rithmetisches nach
Rechts Schieben (<U>S</U>hift-<U>R</U>ight) von ge<U>P</U>ackten
<U>W</U>ord-Datenelementen um die angegebene Anzahl Bin&auml;rstellen<BR>
</A>
<A NAME="PSRAD">
<U>PSRAD</U> register, memory/register -- <U>A</U>rithmetisches nach
Rechts Schieben (<U>S</U>hift-<U>R</U>ight) von ge<U>P</U>ackten
<U>D</U>oubleword-Datenelementen um die angegebene Anzahl Bin&auml;rstellen<BR>
</A>
</FONT>
</TH>
</TR></TABLE>
<P>Die PSRA-Befehle schieben die Bits der gepackten Datenelemente
des Zieloperanden um die im zweiten Operanden (Quelloperand) angegebene
Anzahl Bin&auml;rstellen nach rechts. Von links werden dabei 0-Bits
nachgeschoben. Dabei wird das Vorzeichen des Zieloperanden nicht
beeinflu&szlig;t, d.h. die gepackten Werte im Zieloperanden besitzen
nach der Verschiebung das gleiche Vorzeichen wie vor der Verschiebung.
Das Ergebnis der Verschiebung befindet sich im Zieloperanden.</P>
<P>Der PSRAW-Befehl verschiebt die vier vorzeichenbehafteten, gepackten
Word-Datenelemente des Zieloperanden um die Anzahl Bin&auml;rstellen nach
rechts, die im Quelloperanden angegeben wird. Soll um mehr als 15 Stellen
verschoben werden, so wird der Zieloperand in Abh&auml;ngigkeit des
Vorzeichenbits auf den Wert 0 (positiv) oder -1 (=FFFFh) (negativ)
gesetzt.</P>
<P>Der PSRAD-Befehl verschiebt die vorzeichenbehafteten, gepackten
Doubleword-Datenelemente des Zieloperanden um die Anzahl Bin&auml;rstellen
nach rechts, die im Quelloperanden angegeben wird. Soll um mehr als 31
Stellen verschoben werden, so wird der Zieloperand in Abh&auml;ngigkeit
des Vorzeichenbits auf den Wert 0 (positiv) oder -1 (=FFFFh) (negativ)
gesetzt.</P>
<FONT COLOR="#0000FF"><PRE>
MM0= 0305 A280 1005 FFFFh
(= 0000 0011 0000 0101 1010 0010 1000 0000 0001 0000 0000 0101 1111 1111 1111 1111b)
MM1= 1
PSRAW MM0, MM1
Ergebnis in MM0= 0182 D140 0802 FFFFh
(= 0000 0001 1000 0010 1101 0001 0100 0000 0000 1000 0000 0010 1111 1111 1111 1111b)
</PRE></FONT>
<!-- wie gehts weiter ------------------------------------------------------>
<P><HR SIZE=2></P>
<A HREF="mmx_10.htm" onMouseOver="touch( 'left' );" onMouseOut="release( 'left' );">
<IMG SRC="../images/arrowl.gif" NAME="left" ALT="zurueck" BORDER=0 ALIGN=LEFT></A>
<A HREF="mmx_12.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: 02.01.1999, Jens Hohmuth.
</ADDRESS>
</BODY>
</HTML>