diff --git a/.gitignore b/.gitignore index 7809bf7..8ec754b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +*.pdf + # ---> TeX ## Core latex/pdflatex auxiliary files: *.aux @@ -135,4 +137,3 @@ sympy-plots-for-*.tex/ # WinEdt *.bak *.sav - diff --git a/report/Makefile b/report/Makefile new file mode 100644 index 0000000..898056d --- /dev/null +++ b/report/Makefile @@ -0,0 +1,7 @@ +all: report.pdf + +report.pdf: report.tex ../shared/report.bib + latexmk -pdf $< + +clean: + rm -f *aux *bbl *bcf *blg *_latexmk *fls *log *out *.run.xml diff --git a/report/report.tex b/report/report.tex new file mode 100644 index 0000000..5865129 --- /dev/null +++ b/report/report.tex @@ -0,0 +1,28 @@ +\title{DWARF Semantics} +\author{Théophile Bastian} +\date{\today} + +\documentclass[11pt]{article} + +\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{stmaryrd} +\usepackage{mathtools} +\usepackage[utf8]{inputenc} +\usepackage[backend=biber,style=alphabetic]{biblatex} + +\usepackage{../shared/my_listings} +\usepackage{../shared/my_hyperref} +\usepackage{../shared/specific} +\usepackage{../shared/common} +\usepackage{../shared/todo} + +\addbibresource{../shared/semantics.bib} + +\begin{document} +\maketitle + + +\printbibliography{} +\end{document} diff --git a/shared/common.sty b/shared/common.sty new file mode 100644 index 0000000..a6b4c1c --- /dev/null +++ b/shared/common.sty @@ -0,0 +1,8 @@ +%% Common, non-specific useful commands + +\newcommand{\ie}{\textit{ie.}} +\newcommand{\eg}{\textit{eg.}} + +\newcommand{\set}[1]{\left\{ #1 \right\}} +\newcommand{\card}[1]{\left\vert{} #1 \right\vert} +\newcommand{\abs}[1]{\left\vert{} #1 \right\vert} diff --git a/shared/leftrule_theorems.sty b/shared/leftrule_theorems.sty new file mode 100644 index 0000000..b8004be --- /dev/null +++ b/shared/leftrule_theorems.sty @@ -0,0 +1,43 @@ +\usepackage[dvipsnames]{xcolor} +\usepackage{ifthen} +\usepackage[framemethod=tikz]{mdframed} + +\newcommand{\linedenvTop}[2] + {\begin{samepage}\qquad\textbf{#1}\ifthenelse{\equal{#2}{}}{}{ \textbf{(}\emph{#2}\textbf{)}}\trivlist\item[]\ignorespaces} +\newcommand{\linedenvBot}{\endtrivlist\end{samepage}} + +\newenvironment{lemma}[1][]{\linedenvTop{Lemme}{#1}}{\linedenvBot} +\surroundwithmdframed[linewidth=1.5pt, + linecolor=BurntOrange, + bottomline=false,topline=false,rightline=false]{lemma} + +\newenvironment{definition}[1][]{\linedenvTop{Définition}{#1}}{\linedenvBot} +\surroundwithmdframed[linewidth=1.5pt, + linecolor=Plum, + bottomline=false,topline=false,rightline=false]{definition} + +\newenvironment{theorem}[1][]{\linedenvTop{Théorème}{#1}}{\linedenvBot} +\surroundwithmdframed[linewidth=2.5pt, + linecolor=Red, + bottomline=false,topline=false,rightline=false]{theorem} + +\definecolor{propositionRed}{HTML}{BE0000} +\newenvironment{prop}[1][]{\linedenvTop{Proposition}{#1}}{\linedenvBot} +\surroundwithmdframed[linewidth=1.5pt, + linecolor=propositionRed, + bottomline=false,topline=false,rightline=false]{prop} + +%\newenvironment{proof}{\textbf{Proof}\\}{} +\surroundwithmdframed[linewidth=1.0pt, + linecolor=Blue, + bottomline=false,topline=false,rightline=false]{proof} + +\newenvironment{notation}[1][]{\linedenvTop{Notation}{#1}}{\linedenvBot} +\surroundwithmdframed[linewidth=1.5pt, + linecolor=Brown, + bottomline=false,topline=false,rightline=false]{notation} + +\newenvironment{example}[1][]{\linedenvTop{Exemple}{#1}}{\linedenvBot} +\surroundwithmdframed[linewidth=1.5pt, + linecolor=LimeGreen, + bottomline=false,topline=false,rightline=false]{example} diff --git a/shared/my_hyperref.sty b/shared/my_hyperref.sty new file mode 100644 index 0000000..21c5f45 --- /dev/null +++ b/shared/my_hyperref.sty @@ -0,0 +1,25 @@ +\usepackage{hyperref} +\usepackage{xcolor} + +\definecolor{link_blue}{RGB}{0,0,97} + +\hypersetup{ +% bookmarks=true, % show bookmarks bar? +% unicode=false, % non-Latin characters in Acrobat’s bookmarks +% pdftoolbar=true, % show Acrobat’s toolbar? +% pdfmenubar=true, % show Acrobat’s menu? +% pdffitwindow=false, % window fit to page when opened +% pdfstartview={FitH}, % fits the width of the page to the window +% pdftitle={My title}, % title +% pdfauthor={Author}, % author +% pdfsubject={Subject}, % subject of the document +% pdfcreator={Creator}, % creator of the document +% pdfproducer={Producer}, % producer of the document +% pdfkeywords={keyword1} {key2} {key3}, % list of keywords +% pdfnewwindow=true, % links in new PDF window + colorlinks=true, % false: boxed links; true: colored links + linkcolor=link_blue, % color of internal links (change box color with linkbordercolor) + citecolor=green, % color of links to bibliography + filecolor=magenta, % color of file links + urlcolor=link_blue % color of external links +} diff --git a/shared/my_listings.sty b/shared/my_listings.sty new file mode 100644 index 0000000..f720a6d --- /dev/null +++ b/shared/my_listings.sty @@ -0,0 +1,63 @@ +\usepackage{listings} +\usepackage{algorithmicx} +\usepackage{algpseudocode} +\usepackage{color} +\usepackage{xcolor} +\usepackage{courier} +\definecolor{color_comment}{HTML}{2D6F19} +\definecolor{color_linenum}{HTML}{9E9E9E} +\definecolor{color_strings}{HTML}{D300F3} + + +\lstset{ % +% backgroundcolor=\color{white}, % choose the background color; you must add \usepackage{color} or \usepackage{xcolor} + basicstyle=\footnotesize\ttfamily, % the size of the fonts that are used for the code + breakatwhitespace=false, % sets if automatic breaks should only happen at whitespace + breaklines=true, % sets automatic line breaking + captionpos=b, % sets the caption-position to bottom + commentstyle=\color{color_comment}, % comment style +% deletekeywords={...}, % if you want to delete keywords from the given language +% escapeinside={\%*}{*)}, % if you want to add LaTeX within your code + extendedchars=true, % lets you use non-ASCII characters; for 8-bits encodings only, does not work with UTF-8 + frame=none, % adds a frame around the code + keepspaces=true, % keeps spaces in text, useful for keeping indentation of code (possibly needs columns=flexible) + keywordstyle=\color{blue}, % keyword style + morekeywords={*,...}, % if you want to add more keywords to the set + numbers=left, % where to put the line-numbers; possible values are (none, left, right) + numbersep=5pt, % how far the line-numbers are from the code + numberstyle=\tiny\color{color_linenum}, % the style that is used for the line-numbers + rulecolor=\color{black}, % if not set, the frame-color may be changed on line-breaks within not-black text (e.g. comments (green here)) + showspaces=false, % show spaces everywhere adding particular underscores; it overrides 'showstringspaces' + showstringspaces=false, % underline spaces within strings only + showtabs=false, % show tabs within strings adding particular underscores + stepnumber=1, % the step between two line-numbers. If it's 1, each line will be numbered + stringstyle=\color{color_strings}, % string literal style + tabsize=4, % sets default tabsize to 2 spaces +% title=\lstname, % show the filename of files included with \lstinputlisting; also try caption instead of title +% inputencoding=utf8/latin1 % To accept utf8 encoding +} + +\lstset{literate= + {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 + {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1 + {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1 + {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1 + {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 + {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 + {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1 + {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1 + {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1 + {ű}{{\H{u}}}1 {Ű}{{\H{U}}}1 {ő}{{\H{o}}}1 {Ő}{{\H{O}}}1 + {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1 + {€}{{\EUR}}1 {£}{{\pounds}}1 {¬}{{$\lnot$}}1 {∞}{{$\infty$}}1 +} + +\newcommand{\true}{\lstinline$true$} +\newcommand{\false}{\lstinline$false$} + +\newcommand{\lstbash}[1]{\lstinline[language=bash]$#1$} +\newcommand{\lstocaml}[1]{\lstinline[language=Caml]$#1$} +\newcommand{\lstcpp}[1]{\lstinline[language=C++]$#1$} +\newcommand{\lstc}[1]{\lstinline[language=C]$#1$} +\newcommand{\lstpython}[1]{\lstinline[language=python]$#1$} + diff --git a/shared/report.bib b/shared/report.bib new file mode 100644 index 0000000..694cfc7 --- /dev/null +++ b/shared/report.bib @@ -0,0 +1,13 @@ +@manual{dwarf5std, + title = {DWARF Debugging Information Format version 5}, + organization = {DWARF Debugging Information Format Committee}, + author = {DWARF5}, + url = {http://dwarfstd.org}, + year = {2017}, +} + +@manual{c11std, + title = {ISO/IEC 9899:2011}, + organization = {International Organization for Standardization}, + author = {C11}, +} diff --git a/shared/specific.sty b/shared/specific.sty new file mode 100644 index 0000000..a89da8f --- /dev/null +++ b/shared/specific.sty @@ -0,0 +1,31 @@ +%% Specific commands for this project + +%% DWARF semantics +\newcommand{\dwcfa}[1]{\texttt{DW\_CFA\_#1}} +\newcommand{\reg}[1]{\%#1} + +\newcommand{\DWARF}{\operatorname{DWARF}} + +\newcommand{\FDE}{\operatorname{FDE}} +\newcommand{\dwrow}{\operatorname{Row}} +\newcommand{\spexpr}{\mathbb{E}} +\newcommand{\regs}{\mathbb{R}} +\newcommand{\values}{\mathbb{V}} + +\newcommand{\valaddr}[1]{\operatorname{Addr}\left(#1\right)} +\newcommand{\valval}[1]{\operatorname{Val}\left(#1\right)} + +\newcommand{\intermedlang}{\mathcal{I}} + +\newcommand{\semI}[2]{{\left\llbracket{} #1 \right\rrbracket}^\intermedlang_{#2}} +\newcommand{\semC}[1]{{\left\llbracket{} #1 \right\rrbracket}^{C}} +\newcommand{\semR}[1]{{\left\llbracket{} #1 \right\rrbracket}^{R}} + +\newcommand{\rowstack}{\mathbb{S}} + +\newcommand{\insarrow}[1]{\xleftarrow{\text{#1}}} +\newcommand{\extrarrow}[1]{\xrightarrow{\text{#1}}} + +\newcommand{\contsem}[1]{\semI{d}{s}\left(#1\right)} + +\newcommand{\ehelf}{\texttt{EH\_ELF}} diff --git a/shared/todo.sty b/shared/todo.sty new file mode 100644 index 0000000..c1a3c3a --- /dev/null +++ b/shared/todo.sty @@ -0,0 +1,11 @@ +\RequirePackage{xcolor} + +\definecolor{todobg}{HTML}{FF5F00} +\definecolor{todofg}{HTML}{3700DA} +\definecolor{notebg}{HTML}{87C23C} +\definecolor{notefg}{HTML}{DF4431} + +\newcommand{\qtodo}[1]{\colorbox{todobg}{\textcolor{todofg}{#1}}} +\newcommand{\todo}[1]{\qtodo{\textbf{TODO:}\.#1}} +\newcommand{\qnote}[1]{\colorbox{notebg}{\textcolor{notefg}{[#1]}}} +\newcommand{\note}[1]{\qnote{\textbf{NOTE:}\.#1}}