From 18ed628aeeb2e0a940cfb7a9f4f3f5928700bce3 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Thu, 2 Mar 2017 16:16:48 +0100 Subject: [PATCH 1/7] EIP101: addition precompile --- Paper.tex | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index 29b88d4f..f5829ae5 100644 --- a/Paper.tex +++ b/Paper.tex @@ -779,6 +779,7 @@ \section{Message Call} \label{ch:call} \Xi_{\mathtt{SHA256}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 2 \\ \Xi_{\mathtt{RIP160}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 3 \\ \Xi_{\mathtt{ID}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 4 \\ +\Xi_{\mathtt{ADD}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 5 \\ \Xi(\boldsymbol{\sigma}_1, g, I) & \text{otherwise} \end{cases} \\ I_a & \equiv & r \\ I_o & \equiv & o \\ @@ -1393,13 +1394,30 @@ \section{Precompiled Contracts}\label{app:precompiled} \mathtt{\small RIPEMD160}(\mathbf{i} \in \mathbb{B}) & \equiv & o \in \mathbb{B}_{20} \end{eqnarray} -Finally, the fourth contract, the identity function $\Xi_{\mathtt{ID}}$ simply defines the output as the input: +The fourth contract, the identity function $\Xi_{\mathtt{ID}}$ simply defines the output as the input: \begin{eqnarray} \Xi_{\mathtt{ID}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{where:} \\ g_r &=& 15 + 3\Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil\\ \mathbf{o} &=& I_\mathbf{d} \end{eqnarray} +The fifth contract performs arbitrary-precision addition on non-negative integers. +The first word in the input specifies the number of bytes that the first non-negative integer $X$ occupies. +The result is represented in the smallest possible number of bytes. The first byte in the output is never zero. + +\begin{eqnarray} +\Xi_{\mathtt{ADD}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ +\Xi_{\mathtt{ADD}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| - 32 < I_\mathbf{d}[0..31] \\ +g_r &=& G_{addsubbase} + G_{arithword} \Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil \\ +\mathbf{o} &=& (X + Y) \in \mathbb{B}_\ell \\ +X &=& I_\mathbf{d}[32..(32 + I_\mathbf{d}[0..31] - 1)] \\ +Y &=& I_\mathbf{d}[(32 + I_\mathbf{d}[0..31])..(|I_\mathbf{d}| - 1)] \\ +\ell &=& +\begin{cases} +0 &\text{if}\, X = Y = 0 \\ +\lfloor \log_8(X + Y) \rfloor + 1 & \text{otherwise} +\end{cases} +\end{eqnarray} \section{Signing Transactions}\label{app:signing} @@ -1506,6 +1524,8 @@ \section{Fee Schedule}\label{app:fees} $G_{sha3word}$ & 6 & Paid for each word (rounded up) for input data to a {\small SHA3} operation. \\ $G_{copy}$ & 3 & Partial payment for {\small *COPY} operations, multiplied by words copied, rounded up. \\ $G_{blockhash}$ & 20 & Payment for {\small BLOCKHASH} operation. \\ +$G_{addsubbase}$ & 15 & Payment for the precompiled addition or subtraction contract \\ +$G_{arithword}$ & 6 & Paid for each word used in precompiled contracts for arbitrary precision arighmetics.\\ %extern u256 const c_copyGas; ///< Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. \bottomrule From 9ee3c9a32f8c81504d0f47d27e39609ee3a97337 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Thu, 2 Mar 2017 16:58:26 +0100 Subject: [PATCH 2/7] EIP101: add the subtraction precompile and the multiplication precompile --- Paper.tex | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Paper.tex b/Paper.tex index f5829ae5..8d4b0d10 100644 --- a/Paper.tex +++ b/Paper.tex @@ -780,6 +780,8 @@ \section{Message Call} \label{ch:call} \Xi_{\mathtt{RIP160}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 3 \\ \Xi_{\mathtt{ID}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 4 \\ \Xi_{\mathtt{ADD}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 5 \\ +\Xi_{\mathtt{SUB}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 6 \\ +\Xi_{\mathtt{MUL}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 7 \\ \Xi(\boldsymbol{\sigma}_1, g, I) & \text{otherwise} \end{cases} \\ I_a & \equiv & r \\ I_o & \equiv & o \\ @@ -1419,6 +1421,41 @@ \section{Precompiled Contracts}\label{app:precompiled} \end{cases} \end{eqnarray} +The sixth contract performs arbitrary-precision subtraction on non-negative integers. This is similar to the addition. The subtraction contract halts exceptionally if the result would be negative. + +\begin{eqnarray} +\Xi_{\mathtt{SUB}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ +\Xi_{\mathtt{SUB}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| - 32 < I_\mathbf{d}[0..31] \\ +\Xi_{\mathtt{SUB}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad X < Y \\ +g_r &=& G_{addsubbase} + G_{arithword} \Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil \\ +\mathbf{o} &=& (X - Y) \in \mathbb{B}_\ell \\ +X &=& I_\mathbf{d}[32..(32 + I_\mathbf{d}[0..31] - 1)] \\ +Y &=& I_\mathbf{d}[(32 + I_\mathbf{d}[0..31])..(|I_\mathbf{d}| - 1)] \\ +\ell &=& +\begin{cases} +0 &\text{if}\ X = Y \\ +\lfloor \log_8(X - Y) \rfloor + 1 & \text{otherwise} +\end{cases} +\end{eqnarray} + +The seventh contract performs arbitrary-precision multiplication on non-negative integers. The definition is similar to that of the addition contract. + +\begin{eqnarray} +\Xi_{\mathtt{MUL}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ +\Xi_{\mathtt{MUL}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| - 32 < I_\mathbf{d}[0..31] \\ +g_r &=& G_{muldivbase} + G_{arithword} \Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil + \ell_X \ell_Y / G_{quaddivisor} \\ +\mathbf{o} &=& (X \times Y) \in \mathbb{B}_\ell \\ +X &=& I_\mathbf{d}[32..(32 + I_\mathbf{d}[0..31] - 1)] \\ +\ell_X &=& I_\mathbf{d}[0..31] \\ +Y &=& I_\mathbf{d}[(32 + I_\mathbf{d}[0..31])..(|I_\mathbf{d}| - 1)] \\ +\ell_Y &=& |I_\mathbf{d}| - 32 - \ell_X \\ +\ell &=& +\begin{cases} +0 &\text{if}\ X = 0 \ \text{or}\ Y = 0 \\ +\lfloor \log_8(X \times Y) \rfloor + 1 & \text{otherwise} +\end{cases} +\end{eqnarray} + \section{Signing Transactions}\label{app:signing} The method of signing transactions is similar to the `Electrum style signatures'; it utilises the SECP-256k1 curve as described by \cite{gura2004comparing}. @@ -1525,7 +1562,9 @@ \section{Fee Schedule}\label{app:fees} $G_{copy}$ & 3 & Partial payment for {\small *COPY} operations, multiplied by words copied, rounded up. \\ $G_{blockhash}$ & 20 & Payment for {\small BLOCKHASH} operation. \\ $G_{addsubbase}$ & 15 & Payment for the precompiled addition or subtraction contract \\ +$G_{muldivbase}$ & 30 & Payment for the precompiled multiplication or division contract \\ $G_{arithword}$ & 6 & Paid for each word used in precompiled contracts for arbitrary precision arighmetics.\\ +$G_{quaddivisor}$ & 32 & The quadratic coefficient of the input sizes of multiplication and division precompiled contracts. \\ %extern u256 const c_copyGas; ///< Multiplied by the number of 32-byte words that are copied (round up) for any *COPY operation and added. \bottomrule From 3f707fb7f75d24dfa61d0d2db4eced43037c11e1 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 3 Mar 2017 14:16:19 +0100 Subject: [PATCH 3/7] EIP 101: add division --- Paper.tex | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index 8d4b0d10..28000d52 100644 --- a/Paper.tex +++ b/Paper.tex @@ -782,6 +782,7 @@ \section{Message Call} \label{ch:call} \Xi_{\mathtt{ADD}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 5 \\ \Xi_{\mathtt{SUB}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 6 \\ \Xi_{\mathtt{MUL}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 7 \\ +\Xi_{\mathtt{DIV}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 8 \\ \Xi(\boldsymbol{\sigma}_1, g, I) & \text{otherwise} \end{cases} \\ I_a & \equiv & r \\ I_o & \equiv & o \\ @@ -1438,7 +1439,7 @@ \section{Precompiled Contracts}\label{app:precompiled} \end{cases} \end{eqnarray} -The seventh contract performs arbitrary-precision multiplication on non-negative integers. The definition is similar to that of the addition contract. +The seventh contract performs arbitrary-precision multiplication on non-negative integers. The input format is the same as that of the addition contract. \begin{eqnarray} \Xi_{\mathtt{MUL}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ @@ -1456,6 +1457,28 @@ \section{Precompiled Contracts}\label{app:precompiled} \end{cases} \end{eqnarray} +The eigth contract performs arbitrary-precision division on non-negative integers. The definition is similar to that of the multiplication contract. + +\begin{eqnarray} +\Xi_{\mathtt{DIV}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ +\Xi_{\mathtt{DIV}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| - 32 < I_\mathbf{d}[0..31] \\ +g_r &=& G_{muldivbase} + G_{arithword} \Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil + \ell_X \ell_Y / G_{quaddivisor} \\ +\mathbf{o} &=& +\begin{cases} + () & \text{if} \ Y = 0 \\ + \Big\lfloor \dfrac X Y \Big\rfloor \in \mathbb{B}_\ell & \text{otherwise} +\end{cases} \\ +X &=& I_\mathbf{d}[32..(32 + I_\mathbf{d}[0..31] - 1)] \\ +\ell_X &=& I_\mathbf{d}[0..31] \\ +Y &=& I_\mathbf{d}[(32 + I_\mathbf{d}[0..31])..(|I_\mathbf{d}| - 1)] \\ +\ell_Y &=& |I_\mathbf{d}| - 32 - \ell_X \\ +\ell &=& +\begin{cases} +0 &\text{if}\ Y = 0 \ \text{or} \ \Big\lfloor \dfrac X Y \Big\rfloor = 0 \\ +\lfloor \log_8(\Big\lfloor \dfrac X Y \Big\rfloor) \rfloor + 1 & \text{otherwise} +\end{cases} +\end{eqnarray} + \section{Signing Transactions}\label{app:signing} The method of signing transactions is similar to the `Electrum style signatures'; it utilises the SECP-256k1 curve as described by \cite{gura2004comparing}. From db41732e49e8ec122f0391f7a475794a7e00fec4 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 3 Mar 2017 15:00:30 +0100 Subject: [PATCH 4/7] EIP 101: Add EXPMOD precompile --- Paper.tex | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index 28000d52..a29ad8a8 100644 --- a/Paper.tex +++ b/Paper.tex @@ -783,6 +783,7 @@ \section{Message Call} \label{ch:call} \Xi_{\mathtt{SUB}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 6 \\ \Xi_{\mathtt{MUL}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 7 \\ \Xi_{\mathtt{DIV}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 8 \\ +\Xi_{\mathtt{EXPMOD}}(\boldsymbol{\sigma}_1, g, I) & \text{if} \quad r = 9 \\ \Xi(\boldsymbol{\sigma}_1, g, I) & \text{otherwise} \end{cases} \\ I_a & \equiv & r \\ I_o & \equiv & o \\ @@ -1479,6 +1480,27 @@ \section{Precompiled Contracts}\label{app:precompiled} \end{cases} \end{eqnarray} +\begin{eqnarray} +\Xi_{\mathtt{EXPMOD}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ +\ell_B &=& I_\mathbf{d}[0..31] \\ +B &=& I_\mathbf{d}[32..(31 + \ell_B)] \\ +\ell_E &=& I_\mathbf{d}[(32 + \ell_B)..(63 + \ell_B)] \\ +E &=& I_\mathbf{d}[(64 + \ell_B)..(63 + \ell_B + \ell_E)] \\ +M &=& I_\mathbf{d}[(64 + \ell_B + \ell_E)..(|I_\mathbf{d}| - 1)] \\ +\Xi_{\mathtt{EXPMOD}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| < 32 + \ell_B \quad \vee \quad |I_\mathbf{d}| < 64 + \ell_B + \ell_E \\ +g_r &=& G_{modexpbase} + G_{arithword} \Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil + |M|^2 |E| / G_{quaddivisor} \\ +\mathbf{o} &=& +\begin{cases} + () & \text{if} \ M = 0 \\ + B ^ E \mod M \in \mathbb{B}_\ell & \text{otherwise} +\end{cases} \\ +\ell &=& +\begin{cases} +0 &\text{if}\ M = 0 \ \text{or} \ B ^ E \mod M = 0 \\ +\lfloor \log_8(B ^ E \mod M) \rfloor + 1 & \text{otherwise} +\end{cases} +\end{eqnarray} + \section{Signing Transactions}\label{app:signing} The method of signing transactions is similar to the `Electrum style signatures'; it utilises the SECP-256k1 curve as described by \cite{gura2004comparing}. @@ -1692,7 +1714,7 @@ \subsection{Instruction Set} \begin{tabular*}{\columnwidth}[h]{rlrrl} \toprule \multicolumn{5}{c}{\textbf{0s: Stop and Arithmetic Operations}} \\ -\multicolumn{5}{l}{All arithmetic is modulo $2^{256}$ unless otherwise noted.} \vspace{5pt} \\ +\multicolumn{5}{l}{All arithmetic is modulo $2^{256}$ unless otherwise noted. $0 ^ 0$ is defined to be $1$.} \vspace{5pt} \\ \textbf{Value} & \textbf{Mnemonic} & $\delta$ & $\alpha$ & \textbf{Description} \vspace{5pt} \\ 0x00 & {\small STOP} & 0 & 0 & Halts execution. \\ \midrule From c025e12de400dd997d6e0446737ff28b21d43def Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 3 Mar 2017 15:10:27 +0100 Subject: [PATCH 5/7] EIP 100: add EXPMOD precompile --- Paper.tex | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Paper.tex b/Paper.tex index a29ad8a8..af105c28 100644 --- a/Paper.tex +++ b/Paper.tex @@ -1453,7 +1453,7 @@ \section{Precompiled Contracts}\label{app:precompiled} \ell_Y &=& |I_\mathbf{d}| - 32 - \ell_X \\ \ell &=& \begin{cases} -0 &\text{if}\ X = 0 \ \text{or}\ Y = 0 \\ +0 &\text{if}\ X = 0 \ \vee\ Y = 0 \\ \lfloor \log_8(X \times Y) \rfloor + 1 & \text{otherwise} \end{cases} \end{eqnarray} @@ -1475,7 +1475,7 @@ \section{Precompiled Contracts}\label{app:precompiled} \ell_Y &=& |I_\mathbf{d}| - 32 - \ell_X \\ \ell &=& \begin{cases} -0 &\text{if}\ Y = 0 \ \text{or} \ \Big\lfloor \dfrac X Y \Big\rfloor = 0 \\ +0 &\text{if}\ Y = 0 \ \vee \ \Big\lfloor \dfrac X Y \Big\rfloor = 0 \\ \lfloor \log_8(\Big\lfloor \dfrac X Y \Big\rfloor) \rfloor + 1 & \text{otherwise} \end{cases} \end{eqnarray} @@ -1492,12 +1492,12 @@ \section{Precompiled Contracts}\label{app:precompiled} \mathbf{o} &=& \begin{cases} () & \text{if} \ M = 0 \\ - B ^ E \mod M \in \mathbb{B}_\ell & \text{otherwise} + B ^ E \bmod M \in \mathbb{B}_\ell & \text{otherwise} \end{cases} \\ \ell &=& \begin{cases} -0 &\text{if}\ M = 0 \ \text{or} \ B ^ E \mod M = 0 \\ -\lfloor \log_8(B ^ E \mod M) \rfloor + 1 & \text{otherwise} +0 &\text{if}\ M = 0 \quad \vee \quad {B ^ E} \bmod M = 0 \\ +\lfloor \log_8(B ^ E \bmod M) \rfloor + 1 & \text{otherwise} \end{cases} \end{eqnarray} @@ -1606,8 +1606,9 @@ \section{Fee Schedule}\label{app:fees} $G_{sha3word}$ & 6 & Paid for each word (rounded up) for input data to a {\small SHA3} operation. \\ $G_{copy}$ & 3 & Partial payment for {\small *COPY} operations, multiplied by words copied, rounded up. \\ $G_{blockhash}$ & 20 & Payment for {\small BLOCKHASH} operation. \\ -$G_{addsubbase}$ & 15 & Payment for the precompiled addition or subtraction contract \\ -$G_{muldivbase}$ & 30 & Payment for the precompiled multiplication or division contract \\ +$G_{addsubbase}$ & 15 & Payment for the precompiled addition or subtraction contract. \\ +$G_{muldivbase}$ & 30 & Payment for the precompiled multiplication or division contract. \\ +$G_{modexpbase}$ & 45 & Payment for the precompiled exponention under modulo. \\ $G_{arithword}$ & 6 & Paid for each word used in precompiled contracts for arbitrary precision arighmetics.\\ $G_{quaddivisor}$ & 32 & The quadratic coefficient of the input sizes of multiplication and division precompiled contracts. \\ From 80c3045695b428c52f65765e78e21801ad177a4d Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 3 Mar 2017 15:13:06 +0100 Subject: [PATCH 6/7] EIP 101: simplify a formula A \/ B into B, because A implies B. --- Paper.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index af105c28..630e5a08 100644 --- a/Paper.tex +++ b/Paper.tex @@ -1487,7 +1487,7 @@ \section{Precompiled Contracts}\label{app:precompiled} \ell_E &=& I_\mathbf{d}[(32 + \ell_B)..(63 + \ell_B)] \\ E &=& I_\mathbf{d}[(64 + \ell_B)..(63 + \ell_B + \ell_E)] \\ M &=& I_\mathbf{d}[(64 + \ell_B + \ell_E)..(|I_\mathbf{d}| - 1)] \\ -\Xi_{\mathtt{EXPMOD}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| < 32 + \ell_B \quad \vee \quad |I_\mathbf{d}| < 64 + \ell_B + \ell_E \\ +\Xi_{\mathtt{EXPMOD}}(\boldsymbol{\sigma}, g, I) &\equiv& (\varnothing, 0, A^0, ()) \quad \text{if} \quad |I_\mathbf{d}| < 64 + \ell_B + \ell_E \\ g_r &=& G_{modexpbase} + G_{arithword} \Big\lceil \dfrac{|I_\mathbf{d}|}{32} \Big\rceil + |M|^2 |E| / G_{quaddivisor} \\ \mathbf{o} &=& \begin{cases} From 8d1e99ebfb695184143c810d71fa59a49e3dd646 Mon Sep 17 00:00:00 2001 From: Yoichi Hirai Date: Fri, 3 Mar 2017 15:15:45 +0100 Subject: [PATCH 7/7] EIP 101: simplification --- Paper.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Paper.tex b/Paper.tex index 630e5a08..29e27f5b 100644 --- a/Paper.tex +++ b/Paper.tex @@ -1480,6 +1480,7 @@ \section{Precompiled Contracts}\label{app:precompiled} \end{cases} \end{eqnarray} +The ninth contract performs arbitrary-precision exponentiation under modulo. Here, $0 ^ 0$ is taken to be one. \begin{eqnarray} \Xi_{\mathtt{EXPMOD}} &\equiv& \Xi_{\mathtt{PRE}} \quad \text{except:}\\ \ell_B &=& I_\mathbf{d}[0..31] \\ @@ -1715,7 +1716,7 @@ \subsection{Instruction Set} \begin{tabular*}{\columnwidth}[h]{rlrrl} \toprule \multicolumn{5}{c}{\textbf{0s: Stop and Arithmetic Operations}} \\ -\multicolumn{5}{l}{All arithmetic is modulo $2^{256}$ unless otherwise noted. $0 ^ 0$ is defined to be $1$.} \vspace{5pt} \\ +\multicolumn{5}{l}{All arithmetic is modulo $2^{256}$ unless otherwise noted.} \vspace{5pt} \\ \textbf{Value} & \textbf{Mnemonic} & $\delta$ & $\alpha$ & \textbf{Description} \vspace{5pt} \\ 0x00 & {\small STOP} & 0 & 0 & Halts execution. \\ \midrule