\section{Conditions} Every instruction can be predicated with a condition that will prevent the execution\footnote{The instruction will be executed, but no changes occur.} of the instruction iff the condition is not met. A list of available conditions, including the suffixes for the instruction, is shown in table~\ref{tab:conds} Above and below are for unsigned values. Greater and less for signed values.\\ \textbf{Note:} The definition of tests of unsigned values (in the context of bits which will be tested) depends on the ISA. x86, AMD64 and AVR defines below (unsigned lower) as carry not set. ARM on the other hand defines below as carry set. We will follow the definition of arm in this manner. \begin{table}[ht] \centering \begin{tabular}{|c|c|c|c|}\hline \textbf{Bitcode}&\textbf{Condition}& \textbf{Bits to test} &\textbf{suffixes}\\\hline 0000 & not equal / not zero & ZF = 0 & nq, nz \\ \hline 0001 & equal / zero & ZF = 1 & eq, zs \\ \hline 0010 & not overflow & OF = 0 & no \\ \hline 0011 & overflow & OF = 1 & ov \\ \hline 0100 & not carry / above or eq. & CF = 0 & nc, ae \\ \hline 0101 & carry / below & CF = 1 & cs, bl \\ \hline 0110 & not signed / not neg. & SF = 0 & ns, nn \\ \hline 0111 & signed / neg. & SF = 1 & ss, ns \\ \hline 1000 & above & (CF == 0 $\wedge$ ZF == 0) & ab \\ \hline 1001 & below or equal & (CF == 1 $\vee$ ZF == 1) & be \\ \hline 1010 & greater than or equal & SF == OF & ge \\ \hline 1011 & less than & SF != OF & lt \\ \hline 1100 & greater than & (ZF == 0 $\wedge$ SF == OF) & gt \\ \hline 1101 & less than or equal & (ZF == 1 $\vee$ SF != OF) & le \\ \hline 1110 & always & & \texttt{none} \\ \hline 1111 & never & & nv \\ \hline \end{tabular} \caption{coding of conditions} \label{tab:conds} \end{table} %note: it seams that the definition of conditions on unsigned values depend on the instruction set. below is CF = 1 by x86/amd64 and avr, CF = 0 by arm. when cmp is defined as cmp r1, r2 == r1-r2 == is r1 COND r2 then arm looks more saner. the conditons marked with a X in the bitcode are open for change because of this unclear situation \Large{RFC} \normalsize \begin{table}[hpt] \centering \begin{tabular}{|l|c|c|c|c|} \hline \textbf{Bit} & 3 & 2 & 1 & 0 \\ \hline \textbf{Flag}& SF & CF & OF & ZF \\ \hline \end{tabular} \caption{Bits in the PSW} \end{table}