\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{fancyhdr}

%%% gestion des marges.
\addtolength{\headheight}{1.14998pt}
\topmargin 5 pt
\headsep 30 pt
\textheight 630 pt
\oddsidemargin 0 pt
\evensidemargin 0  pt
\textwidth 480 pt
\def\baselinestretch{1.1}
\addtolength{\oddsidemargin}{-0.5 cm}
\addtolength{\evensidemargin}{-0.5 cm}

\setlength\parskip{0.75em}
\setlength\parindent{0em}

%%%% corps du document

\pagestyle{fancy}

\begin{document}

\fancyhf{}
\fancyhf[HL]{LO52}
\fancyhf[HR]{\Large Cours séance 2}



%% debut

\begin{flushright}
  \textbf {\LARGE {Théorie des langages (suite)}}
\end{flushright}

\section*{Avertissements}

Ce document contient des prises de notes de cours, mais sont très
incomplètes ! LA qualité de ce cours est très inférieure à ce qui
était attendu, préférant passer le temps du cours à jouer à Chrono
Trigger, au lieu de suivre sérieusement. Pour plus d'informations, il
vaudrait mieux se réferrer au polycopié, disponible à la
reprographie. Je tacherais de compléter si j'ai l'occasion de
retrouver le cours.


\section{Langages intermédiaires (Pseudo-Code)}

Il existe une sorte de pseudo-code interprété, par exemple
\textbf{Java} ou encore \textbf{Python}. Les avantages sont :

\begin{itemize}
\item la rapidité d'execution,
\item la flexibilité, 
\item la puissance
\end{itemize}

\section{Bootstrap}

Le concept de Bootstrap cherche à résoudre le problème de comment
écrire un compilateur dans le langage de programmation cible qu'il
doit compiler, par exemple, comment écrire un compilateur java,
lui-même écrit en java ?


Terminologie :
\begin{itemize}
\item \textbf{Build  :} ordinateur qui compile
\item \textbf{Host   :} ordinateur qui exécutera
\item \textbf{Target :} ordinateur pour lequel le logiciel produit des données
\end{itemize}


\section{Compilation native}


Principe de compilation ``au vol''

\begin{itemize}
\item Bytecode : code natif au chargement ou à la première execution
\item Peut produire plusieurs alternatives natives d'un même code
\item Gain de temps
\end{itemize}

JVM est de type "token threaded code"


Arbres syntaxiques pour représenter les structures de contrôle des
langages.

GCC utilise un langage intermédiaire

Intel 32 bits : architecture CISC

exemple de code 

\begin{verbatim}
a = a + b * c;
\end{verbatim}
donnera en assembleur x86 :
\begin{verbatim}
	movl b, %eax
	imull c, %eax
	addl %eax, a
\end{verbatim}


\end{document}