summaryrefslogtreecommitdiffstats
path: root/Doc/lib/libdis.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Doc/lib/libdis.tex')
-rw-r--r--Doc/lib/libdis.tex59
1 files changed, 59 insertions, 0 deletions
diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex
index b89bf3d..593daca 100644
--- a/Doc/lib/libdis.tex
+++ b/Doc/lib/libdis.tex
@@ -130,6 +130,11 @@ Lifts second and third stack item one position up, moves top down
to position three.
\end{opcodedesc}
+\begin{opcodedesc}{ROT_FOUR}{}
+Lifts second, third and forth stack item one position up, moves top down to
+position four.
+\end{opcodedesc}
+
\begin{opcodedesc}{DUP_TOP}{}
Duplicates the reference on top of the stack.
\end{opcodedesc}
@@ -209,6 +214,55 @@ Implements \code{TOS = TOS1 \^\ TOS}.
Implements \code{TOS = TOS1 | TOS}.
\end{opcodedesc}
+In-place operations are like binary operations, in that they remove TOS and
+TOS1, and push the result back on the stack, but the operation is done
+in-place when TOS1 supports it, and the resulting TOS may be (but does not
+have to be) the original TOS1.
+
+\begin{opcodedesc}{INPLACE_POWER}{}
+Implements in-place \code{TOS = TOS1 ** TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_MULTIPLY}{}
+Implements in-place \code{TOS = TOS1 * TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_DIVIDE}{}
+Implements in-place \code{TOS = TOS1 / TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_MODULO}{}
+Implements in-place \code{TOS = TOS1 \%{} TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_ADD}{}
+Implements in-place \code{TOS = TOS1 + TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_SUBTRACT}{}
+Implements in-place \code{TOS = TOS1 - TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_LSHIFT}{}
+Implements in-place \code{TOS = TOS1 << TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_RSHIFT}{}
+Implements in-place \code{TOS = TOS1 >> TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_AND}{}
+Implements in-place \code{TOS = TOS1 \&\ TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_XOR}{}
+Implements in-place \code{TOS = TOS1 \^\ TOS}.
+\end{opcodedesc}
+
+\begin{opcodedesc}{INPLACE_OR}{}
+Implements in-place \code{TOS = TOS1 | TOS}.
+\end{opcodedesc}
+
The slice opcodes take up to three parameters.
\begin{opcodedesc}{SLICE+0}{}
@@ -366,6 +420,11 @@ the stack right-to-left.
%This opcode is obsolete.
%\end{opcodedesc}
+\begin{opcodedesc}{DUP_TOPX}{count}
+Duplicate \var{count} items, keeping them in the same order. Due to
+implementation limits, \var{count} should be between 1 and 5 inclusive.
+\end{opcodedesc}
+
\begin{opcodedesc}{STORE_ATTR}{namei}
Implements \code{TOS.name = TOS1}, where \var{namei} is the index
of name in \member{co_names}.