X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=appx%2Fbytecode.tex;fp=appx%2Fbytecode.tex;h=b6e13f80dd35e1f6218d831be26ec8a71da1579a;hb=3fe94feeee0efd1922263aca9d578031e2283f61;hp=0000000000000000000000000000000000000000;hpb=48a1a1a9479f5454936cf04fb2ae29e1e854bf39;p=phd-thesis.git diff --git a/appx/bytecode.tex b/appx/bytecode.tex new file mode 100644 index 0000000..b6e13f8 --- /dev/null +++ b/appx/bytecode.tex @@ -0,0 +1,107 @@ +\documentclass[../thesis.tex]{subfiles} + +\begin{document} +\ifSubfilesClassLoaded{ + \pagenumbering{arabic} +}{} + +\chapter{Bytecode instruction set}% +\label{chp:bytecode_instruction_set}% +\todo[inline]{formatting} + +\begin{tabular}{ll} + $l$ & label\\ + $w_r$ & return width\\ + $w_a$ & argument width\\ + $fp$ & frame pointer\\ + $sp$ & stack pointer\\ + $pc$ & program counter\\ +\end{tabular} + +Bytecode is byte encoded, stack has 16-bit cells. +Longs and reals are stored with the MSB first. + +\footnotesize +%\begin{longtable}{lllll} +% \caption{\normalsize Semantics for the bytecode instructions\label{tbl:instr_task}} +% \endfirsthead% +% \caption{\normalsize Semantics for the bytecode instructions (cont.)} +% \endhead% +% \endfoot% +% \endlastfoot% +% \toprule +% Instr. & Args & Semantics & sp & pc\\ +% +% \midrule +% \texttt{return} & $w_r~w_a$ & $st[fp\shortminus{}w_a\shortminus{}3+i] = st[fp+1]$ & $st[fp\shortminus{}w_a\shortminus{}3+w_r]$ & $st[fp\shortminus{}w_a\shortminus{}1]$\\ +% & & {\bf for all} $i\in\{0..w_r\}$\\ +% & & $fp = st[fp\shortminus{}w_a\shortminus{}2]$\\ +% \texttt{jumpF} & $l$ & & $sp\shortminus{}1$ & $\left\{\begin{array}{ll} pc+1 & \textrm{\bf if } st[sp\shortminus{}1]\\l & \textrm{\bf otherwise}\end{array}\right.$\\ +% \texttt{jump} & $l$ & & $sp\shortminus{}1$ & $l$\\ +% \texttt{jumpSR} & $w_a~l$ & $st[sp\shortminus{}w_a\shortminus{}1]=pc+2$ & & $l$\\ +% \texttt{tailCall} & $w_{a_1}~w_{a_2}~l$ & $rotate\:(w_{a_1}+3+w_{a_2},w_{a_2})$ & $fp$ & $jl$\\ +% & & $fp = fp-w_{a_1}+w_{a_2}$\\ +% & & \multicolumn{3}{p{.75\textwidth}}{{\bf where} $w_{a_1}$ is the width of the current function and $w_{a_2}$ the width of the called function}\\ +% \texttt{arg} & $i$ & $st[sp] = st[fp-1-i]$ & $sp+1$\\ +% \texttt{push} & $n~b_0\ldots b_n$ & $st[sp+i] = s[i]$ & $sp+n$ & $pc+2+n$\\ +% & & {\bf for all} $i\in\{0..n\}$\\ +%% \midrule +% \texttt{pop} & $n$ & & $sp-n$ & $pc+2$\\ +%% \midrule +% \texttt{rot} & $d~n$ & $rotate\:(d, n)$ & $sp$ & $pc+3$\\ +%% \midrule +% \texttt{dup} & & $st[sp] = st[sp-1]$ & $sp+1$ & $pc+1$\\ +%% \midrule +% \texttt{pushPtrs} & & $st[sp] = sp$ & $sp+3$ & $pc+1$\\ +% & & $st[sp+1] = fp$\\ +% & & $st[sp+2] = 0$\\ +%% \midrule +% \texttt{unOp} & & $st[sp-1] = \diamond{}st[sp-1]$ & $sp$ & $pc+1$\\ +% & & \multicolumn{3}{l}{{\bf for all} $\diamond\in\{\neg\}$}\\ +%% \midrule +% \texttt{binOp} & & $st[sp-2] = st[sp-2] \mathbin{\oplus} st[sp-1]$ & $sp-1$ & $pc+1$\\ +% & & \multicolumn{3}{l}{{\bf for all} $\oplus\in\{+, -, *, /, \wedge, \vee, \equiv, \not\equiv, \leq, \geq, <, >\}$}\\ +%% \midrule +% \texttt{mkTask} & \texttt{Stable\textsubscript{n}} & $st[sp-n-1] = node (stable,$ & $sp-n+1$ & $pc+2$\\ +% & & $\qquad\qquad st[sp-1], \ldots, st[sp-n-1])$\\ +% \texttt{mkTask} & \texttt{Unstable\textsubscript{n}} & $st[sp-n-1] = node (unstable,$ & $sp-n+1$ & $pc+2$\\ +% & & $\qquad\qquad st[sp-1], \ldots, st[sp-n-1])$\\ +%% \midrule +%% & \multicolumn{3}{l}{Unstable\textsubscript{n}} & st[sp-n-1] = node (unstable, & sp-n+1 & pc+2\\ +%% & \multicolumn{3}{l}{} & \qquad\qquad st[sp-1], \textrm{\ldots}, st[sp-n-1])\\ +%% \midrule +%% +%% & \multicolumn{3}{l}{ReadD } & st[sp-1] \ \ = node (readd, st[sp-1]) & & pc+2\\ +%% \midrule +%% & \multicolumn{3}{l}{ReadA } & st[sp-1] \ \ = node (reada, st[sp-1]) & & pc+2\\ +%% \midrule +%% & \multicolumn{3}{l}{Repeat } & st[sp-1] \ \ = node (repeat, st[sp-1]) & & pc+2\\ +%% \midrule +%% & \multicolumn{3}{l}{Delay } & st[sp-1] \ \ = node (delay, st[sp-1]) & & pc+2\\ +%% \midrule +%% +%% & \multicolumn{3}{l}{WriteD } & st[sp-2] \ \ = node (writed, st[sp-1], st[sp-2]) & sp-1 & pc+2\\ +%% \midrule +%% & \multicolumn{3}{l}{WriteA } & st[sp-2] \ \ = node (writea, st[sp-1], st[sp-2]) & sp-1 & pc+2\\ +%% \midrule +%% & \multicolumn{3}{l}{And } & st[sp-2] \ \ = node (and, st[sp-1], st[sp-2]) & sp-1 & pc+2\\ +%% \midrule +%% & \multicolumn{3}{l}{Or } & st[sp-2] \ \ = node (or, st[sp-1], st[sp-2]) & sp-1 & pc+2\\ +%% \midrule +%% +%% & \multicolumn{3}{l}{SdsSet i } & st[sp-1] \ \ = node (sdsset,i, st[sp-1]) & & pc+3\\ +%% \midrule +%% +%% & \multicolumn{3}{l}{SdsGet i } & st[sp]\ \ \ \ \ = node (sdsget, i) & sp+1 & pc+3\\ +%% \midrule +%% & \multicolumn{3}{l}{DHTTemp i } & st[sp-1] \ \ = node (dhttemp, i) & sp+1 & pc+3\\ +%% \midrule +%% & \multicolumn{3}{l}{DHTHumid i } & st[sp-1] \ \ = node (dhthumid, i) & sp+1 & pc+3\\ +%% \midrule +%% +%% & \multicolumn{3}{l}{Step aw jl } & st[sp-1] \ \ = node (step, aw, jl, st[sp-1]) & sp-1 & pc+5\\ +% \bottomrule +%\end{longtable} + +\input{subfilepostamble} +\end{document}