|
@@ -7652,28 +7652,29 @@ language, whose syntax is defined in Figure~\ref{fig:x86-3}.
|
|
|
\[
|
|
|
\begin{array}{lcl}
|
|
|
\Arg &::=& \gray{ \INT{\Int} \mid \REG{\Reg}
|
|
|
- \mid (\key{deref}\,\Reg\,\Int) } \\
|
|
|
- &\mid& \gray{ (\key{byte-reg}\; \Reg)
|
|
|
- \mid (\key{global}\; \itm{name}) }
|
|
|
- \mid (\key{fun-ref}\; \itm{label})\\
|
|
|
+ \mid \LP\key{deref}\,\Reg\,\Int\RP } \\
|
|
|
+ &\mid& \gray{ \LP\key{byte-reg}\; \Reg\RP
|
|
|
+ \mid \LP\key{global}\; \itm{name}\RP }
|
|
|
+ \mid \LP\key{fun-ref}\; \itm{label}\RP\\
|
|
|
\itm{cc} & ::= & \gray{ \key{e} \mid \key{l} \mid \key{le} \mid \key{g} \mid \key{ge} } \\
|
|
|
-\Instr &::=& \gray{ (\key{addq} \; \Arg\; \Arg) \mid
|
|
|
- (\key{subq} \; \Arg\; \Arg) \mid
|
|
|
- (\key{negq} \; \Arg) \mid (\key{movq} \; \Arg\; \Arg) } \\
|
|
|
- &\mid& \gray{ (\key{callq} \; \mathit{label}) \mid
|
|
|
- (\key{pushq}\;\Arg) \mid
|
|
|
- (\key{popq}\;\Arg) \mid
|
|
|
- (\key{retq}) } \\
|
|
|
- &\mid& \gray{ (\key{xorq} \; \Arg\;\Arg)
|
|
|
- \mid (\key{cmpq} \; \Arg\; \Arg) \mid (\key{set}\itm{cc} \; \Arg) } \\
|
|
|
- &\mid& \gray{ (\key{movzbq}\;\Arg\;\Arg)
|
|
|
- \mid (\key{jmp} \; \itm{label})
|
|
|
- \mid (\key{j}\itm{cc} \; \itm{label})
|
|
|
- \mid (\key{label} \; \itm{label}) } \\
|
|
|
- &\mid& (\key{indirect-callq}\;\Arg ) \mid (\key{tail-jmp}\;\Arg) \\
|
|
|
- &\mid& (\key{leaq}\;\Arg\;\Reg)\\
|
|
|
-\Def &::= & (\key{define} \; (\itm{label}) \;((\itm{label} \,\key{.}\, (\Instr\ldots))\ldots))\\
|
|
|
-x86_3 &::= & (\key{program} \;\itm{info} \;\Def\ldots)
|
|
|
+\Instr &::=& \gray{ \LP\key{addq} \; \Arg\; \Arg\RP \mid
|
|
|
+ \LP\key{subq} \; \Arg\; \Arg\RP \mid
|
|
|
+ \LP\key{negq} \; \Arg\RP \mid \LP\key{movq} \; \Arg\; \Arg\RP } \\
|
|
|
+ &\mid& \gray{ \LP\key{callq} \; \mathit{label}\RP \mid
|
|
|
+ \LP\key{pushq}\;\Arg\RP \mid
|
|
|
+ \LP\key{popq}\;\Arg\RP \mid
|
|
|
+ \LP\key{retq}\RP } \\
|
|
|
+ &\mid& \gray{ \LP\key{xorq} \; \Arg\;\Arg\RP
|
|
|
+ \mid \LP\key{cmpq} \; \Arg\; \Arg\RP \mid \LP\key{set}\itm{cc} \; \Arg\RP } \\
|
|
|
+ &\mid& \gray{ \LP\key{movzbq}\;\Arg\;\Arg\RP
|
|
|
+ \mid \LP\key{jmp} \; \itm{label}\RP
|
|
|
+ \mid \LP\key{j}\itm{cc} \; \itm{label}\RP
|
|
|
+ \mid \LP\key{label} \; \itm{label}\RP } \\
|
|
|
+ &\mid& \LP\key{indirect-callq}\;\Arg \RP \mid \LP\key{tail-jmp}\;\Arg\RP \\
|
|
|
+ &\mid& \LP\key{leaq}\;\Arg\;\Reg\RP\\
|
|
|
+\Block &::= & \Instr\ldots \\
|
|
|
+\Def &::= & \LP\key{define} \; \LP\itm{label}\RP \;\LP\LP\itm{label} \,\key{.}\, \Block\RP\ldots\RP\RP\\
|
|
|
+x86_3 &::= & \Def\ldots
|
|
|
\end{array}
|
|
|
\]
|
|
|
\end{minipage}
|
|
@@ -7694,8 +7695,9 @@ x86_3 &::= & (\key{program} \;\itm{info} \;\Def\ldots)
|
|
|
\Instr &::=& \ldots \mid \INDCALLQ{\itm{label}}{\itm{int}}
|
|
|
\mid \TAILJMP{\Arg}{\itm{int}}\\
|
|
|
&\mid& \BININSTR{\code{'leaq}}{\Arg}{\REG{\Reg}}\\
|
|
|
- \Def &::= & \DEF{\itm{label}}{\code{'()}}{\Type}{\itm{info}}{((\itm{label}\,\key{.}\,\Block)\ldots)} \\
|
|
|
-x86_3 &::= & \PROGRAMDEFS{\itm{info}}{(\Def\ldots)}
|
|
|
+ \Block &::= & \BLOCK{\itm{info}}{\LP\Instr\ldots\RP}\\
|
|
|
+ \Def &::= & \DEF{\itm{label}}{\code{'()}}{\Type}{\itm{info}}{\LP\LP\itm{label}\,\key{.}\,\Block\RP\ldots\RP} \\
|
|
|
+x86_3 &::= & \PROGRAMDEFS{\itm{info}}{\LP\Def\ldots\RP}
|
|
|
\end{array}
|
|
|
\]
|
|
|
\end{minipage}
|