From the multirow
-documentation:
It’s just about impossible to deal correctly with descenders. The text will be set up centred, but it may then have a baseline that doesn’t match the baseline of the stuff beside it, in particular if the stuff beside it has descenders and text does not. This may result in a small misalignment. About all that can be done is to do a final touchup on text, using the fixup optional argument. (Hint: If you use a measure like .1ex, there’s a reasonable chance that the fixup will still be correct if you change the point size.)
So we need to use the fixup-parameter.
Output

Code
\documentclass[12pt]{article}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{center}
\begin{table}[ht]
\caption{Virtual Machine Byte Code}\label{tab:vm}
\begin{tabular}{lll}
\toprule
{\bf Group} & {\bf Name} & {\bf Parameters} \\
\midrule\midrule[.1em]
\multirow{4}{2.5cm}[-1.5ex]{ Stack}
& {\tt push}
& {\tt store} \\
\cmidrule(lr){2-3}
& {\tt pop}
& {\tt success} \\
\cmidrule(lr){2-3}
& {\tt load}
& {\tt success} \\
\cmidrule(lr){2-3}
& {\tt save}
& {\tt success} \\
\midrule[.1em]
\multirow{4}{2.5cm}[-1.5ex]{Stack}
& {\tt push}
& {\tt store} \\
\cmidrule(lr){2-3}
& {\tt pop}
& {\tt success} \\
\cmidrule(lr){2-3}
& {\tt load}
& {\tt success} \\
\cmidrule(lr){2-3}
& {\tt save}
& {\tt success} \\
\bottomrule
\end{tabular}
\end{table}
\end{center}
\end{document}
Some Suggestions
The look of the table could be improved a bit. Don't use \begin{centering}
, it adds some unnecessary vertical space. Also, we probably don't need all of the rules. Especially double rules. To seperate some rows, which might otherwise be difficult to distinguish, it could be better to simply add some space with \addlinespace
from booktabs
-package. Also, as others have pointed out, use array
-package so you don't need to write the same thing so many times. For the header you can add a command which sets the header-format.
Also, is seems, that as I have made the changes with removing the rules and inserting the space, there is no longer any use of the fixup-parameter as it has centered nicely, so I just removed it.
Output

Code
\documentclass[12pt]{article}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{array}
\newcommand{\headerFormat}{\normalfont\bfseries}
\begin{document}
\begin{table}[ht]
\centering
\caption{Virtual Machine Byte Code}\label{tab:vm}
\begin{tabular}{>{\ttfamily}lll}
\toprule
\headerFormat Group & \headerFormat Name & \headerFormat Parameters \\
\midrule
\multirow{4}{2.5cm}{Stack}
& push
& store \\
& pop
& success \\
& load
& success \\
& save
& success \\
\addlinespace
\multirow{4}{2.5cm}{Stack}
& push
& store \\
& pop
& success \\
& load
& success \\
& save
& success \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
\multirow{4}{2.5cm}{Stack}
to\multirow{5}{2.5cm}{Stack}
. (The three\cmidrule
instructions add extra (vertical) whitespace, amounting to about 1 extra "real" row.) By the way, using\midrule\midrule[.1em]
seems overkill. A single\midrule
should do just fine. – Mico Jun 22 '16 at 21:15\begin{center}
...\end{center}. Instead this rather write \begin{table[htb]\centering ... \end{table}
– Zarko Jun 22 '16 at 21:15\multirow
and letting “Stack” stay where it belong, that is, at the top of the otherwise empty space. Besides, you should know that\bf
and\tt
have been deprecated more than twenty years ago. – egreg Jun 22 '16 at 22:09