File: pseudo-ops.tex

package info (click to toggle)
mlton 20210117%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,464 kB
  • sloc: ansic: 27,682; sh: 4,455; asm: 3,569; lisp: 2,879; makefile: 2,347; perl: 1,169; python: 191; pascal: 68; javascript: 7
file content (39 lines) | stat: -rw-r--r-- 1,439 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
\section{Client Defined Pseudo Ops}
\subsection{Introduction}
\newdef{Pseudo ops}
are client defined instruction stream markers.  They
can be used to represent assembly directives.
Pseudo ops should satisfy the following signature:
\begin{SML}
signature \mlrischref{instructions/pseudoOps.sig}{PSEUDO_OPS} = sig
  type pseudo_op
  val toString : pseudo_op -> string
  val emitValue : {pOp:pseudo_op, loc:int, emit:Word8.word -> unit} -> unit
  val sizeOf : pseudo_op * int -> int
  val adjustLabels : pseudo_op * int -> bool
end
\end{SML}

The method that is required is:
\begin{itemize}
 \item \sml{toString} -- pretty printing the pseudo in assembly format.
\end{itemize}

When machine code generation is used, we also have to implement
the following methods:
\begin{itemize}
 \item \sml{emitValue} --
    emit value of pseudo op give current location counter and output
    stream. The value emitted should respect the endianness of the
    target machine.
 \item \sml{sizeOf} --
    Size of the pseudo op in bytes given the current location counter
    The location counter is provided in case some pseudo ops are 
    dependent on alignment considerations.
 \item \sml{adjustLabels} --
    adjust the value of labels in the pseudo op given the current
    location counter.
\end{itemize}
These methods are involved during the 
\href{span-dep.html}{span dependence resolution} phase to determine
the size and layout of the pseudo ops.