\begin{questions}
\item
\begin{itemize}
\item Instruction \texttt{LD 0} : charge \texttt{10} dans l'accumulateur.

\Par

\item Instruction \texttt{ADD 1} : ajoute \texttt{20} à l'accumulateur, qui contient maintenant \texttt{30}.

\Par

\item Instruction \texttt{STO 2} : stocke \texttt{30} à l'adresse \texttt{2}.

\Par

\item Instruction \texttt{END} : arrête le programme.
\end{itemize}

Nous avons donc l'état final de la mémoire suivant:

\textbf{État final de la mémoire :}

\begin{verbatim}
Adresse | Contenu
--------|--------
0       | 10
1       | 20
2       | 30
3       | LD 0
4       | ADD 1
5       | STO 2
6       | END
\end{verbatim}

\item Voici une modification du programme précédent pour calculer\linebreak \texttt{Z = X - Y} au lieu de \texttt{Z = X + Y}:
\begin{verbatim}
3       | LD 0
4       | SUB 1
5       | STO 2
6       | END
\end{verbatim}

\item Dans une architecture multi-cœur, plusieurs instances de ce programme pourraient être exécutées en parallèle, chaque cœur traitant une instance distincte. Cela permettrait de traiter simultanément plusieurs calculs indépendants, réduisant ainsi le temps total d'exécution.

\item Voici une version en pseudo-assembleur pour calculer \texttt{Z = X × Y}, en supposant que l'instruction \texttt{MUL X} soit disponible:
\begin{verbatim}
3       | LD 0
4       | MUL 1
5       | STO 2
6       | END
\end{verbatim}
\end{questions}

