summaryrefslogtreecommitdiff
path: root/language/manual.tex
diff options
context:
space:
mode:
authorKathy Gray2016-09-25 09:25:32 +0900
committerKathy Gray2016-09-25 09:25:43 +0900
commitd68d1e959091b186ebb5cbecf53992307b852f0d (patch)
tree277182c6aec29c41d1753fd9fd9670498e8d4f34 /language/manual.tex
parent6e7cee1575a7c49f4bdc30dfd6f25546c6c70995 (diff)
Catch formal type system up to reality, in progress
Diffstat (limited to 'language/manual.tex')
-rw-r--r--language/manual.tex17
1 files changed, 14 insertions, 3 deletions
diff --git a/language/manual.tex b/language/manual.tex
index 69fd8e8b..86aaa8b0 100644
--- a/language/manual.tex
+++ b/language/manual.tex
@@ -38,11 +38,11 @@ this will come from a combination of users and Sail developers.
\begin{itemize}
-\item Declare memory access functions as one read, one write for each
- kind of access.
+\item Declare memory access functions as one read, one write announce,
+ and one write value for each kind of access.
For basic user-mode instructions, there should be the need for only
-one memory read and one memory write function. These should each be
+one memory read and two memory write function. These should each be
declared using {\tt val extern} and should have effect {\tt wmem} and
{\tt rmem} accordingly.
@@ -97,6 +97,17 @@ either with {\tt a} or {\tt a[0]}.
The sail interpreter is hard-wired to look for functions with these names.
+\item Type annotations are necessary to read the contents of a
+ register into a local variable.
+
+The code {\tt x := GPR[4]}, where GPR is a vector of general purpose
+registers, will store a local reference to the fourth general purpose
+register, not the contents of that registe, i.e. this will not read
+the register. To read the register contents into a local variable, the
+type is required explicitly so {\tt (bit[64]) x := GPR[4]} reads the
+register contents into x. The type annotation may be on either side of
+the assignment.
+
\end{itemize}