@@ -274,6 +274,7 @@ \subsubsection{Deprecated Instructions in Capability Mode}
274274 \item \insnnoref {LSS }
275275 \item \insnnoref {LAR }
276276 \item \insnnoref {LSL }
277+ \item Direct memory-offset \insnnoref {MOV }
277278\end {itemize }
278279
279280\subsection {Using Capabilities with Memory Address Operands }
@@ -373,6 +374,18 @@ \subsubsection{Absolute Addresses}
373374register. These operands are always evaluated as offsets relative to
374375\DDC {} including in capability mode.
375376
377+ \subsubsection {Direct Memory-Offset MOVs }
378+
379+ The direct memory-offset \insnnoref {MOV } instructions store the
380+ absolute address of a memory operand as an immediate operand.
381+ Extending these instructions to support capability immediates would
382+ require padding nops to align the capability immediate as well as text
383+ relocations (even for position-dependent code). However, we do not
384+ anticipate wide use of these instructions so instead choose to
385+ restrict memory offsets to integers. Attempting to use these
386+ instructions with capability-aware addressing would be reserved and
387+ raise a UD\# exception.
388+
376389\subsubsection {Addresses Relative to CFS and CGS }
377390
378391Capability-aware addressing must also permit addresses defined as
@@ -488,7 +501,7 @@ \subsubsection{Extending Existing Instructions to Support Capability Operands}
488501 Note that these instructions would only permit a general-purpose
489502 register as the source (\texttt {89 }) or destination (\texttt {8B }).
490503
491- The \texttt {A1 } and \texttt {A2 } opcodes would be extended to use
504+ The \texttt {A1 } and \texttt {A3 } opcodes would be extended to use
492505 \CAX {} as the implicit operand when used with the capability
493506 operand prefix.
494507
@@ -1399,3 +1412,11 @@ \subsection{Far Branches and Capabilities}
13991412sense to deprecate far branches other than \insnnoref {IRET } completely
14001413in capability mode causing the instructions to raise an illegal
14011414instruction fault.
1415+
1416+ \subsection {Direct Memory-Offset MOVs }
1417+
1418+ These four \insnnoref {MOV } instructions store the address of their
1419+ memory operand inline as an immediate. These instructions could be
1420+ extended to support capability immediates for the memory offset. In
1421+ that case, the opcodes would be retained in capability mode rather
1422+ than deprecated.
0 commit comments